Kodumda gizemli bir sorunu izliyorum. Sen bazı değişkenlere tanımlanır nerede olduğunu ve ne içindir, gizemli bir şeydir için çeke olur gerekmeztypeof jQuery.data() buggy?
my.$table_body.delegate('.wf-dropdown', 'change', function(e){
parent_row_element = $(e.target).closest('tr')[0];
if(typeof $.data(parent_row_element, 'changed') == 'undefined')
$.data(parent_row_element, 'changed', {});
$.data(parent_row_element, 'changed').wf_id = e.target.value;
// .. more code
});
: Bu "hata" jQuery en .delegate()
aracılığıyla bağlandı bir event handler
içinde olur undefined
değeri. Açıkça parent_row_element
'a eklenmiş bir nesne olup olmadığını kontrol edin ve eğer oluşturmadıysanız oluşturun. Gerçekten açıklayamayacağım bir şekilde typeof $.data(anything)
başarısız gibi görünüyor. Firebug gibi bir hata ayıklayıcı ekliyse, undefined
doğru olarak değerlendirir ve her şey hata ayıklayıcısız çalışır, .wf_id
atama her zaman, nesne tanımlanmamış olduğundan, çünkü tanımlanmamış olduğundan atar.
bu deyimi kullanın eğer mükemmel çalışıyor: Bunun bir hata olduğunu tahmin yüzden
if(!$.data(parent_row_element, 'changed'))
$.data(parent_row_element, 'changed', {});
. Yoksa burada bir şeyi gözden kaçırıyor muyum? Bu davranışı yeniden olabilir
:
tıklamada bir hata atar typeof
http://www.jsfiddle.net/5cEVf/
hiçbir typeof
http://www.jsfiddle.net/5cEVf/3/
Burada '==' yerine '===' kullanımıyla korkutucu bölgede bulunuyorsunuz. (oh "typeof" sonucunu bekle - boşver) – Pointy
@Pointy: Sanmıyorum? '==' hiç bir sorun olmamalı, her ikisi de hata ayıklama modunda '==' ve '===' '' true 'olarak değerlendirmelidir. – jAndy
neden "typeof" sonucunu 'uyandırmıyorsunuz, böylece bir hata ayıklayıcısını kullanmadan neler olduğunu görebilirsiniz. –