2012-07-01 54 views
0
var $content = $('#SomeDivContainingTwoImages'); 
$content.children().each(function(i){ 
    $(this).showImage = showImageStatic; 
    $(this).showImage(); 
}); 

返回jQuery對象沒有方法 'XYZ'

Uncaught TypeError: Object #<Object> has no method 'showImage' 

時運行。這在每個迭代器的jQuery之外工作,也就是說,如果我只是將它應用於單個元素。這是怎麼回事?

回答

4

你正在重新創建一個jQuery對象,每次調用$(this)。

這應該工作:

$content.children().each(function(i) { 
    var $this = $(this); 
    $this.showImage = showImageStatic; 
    $this.showImage(); 
}); 

但我認爲這不是處理這是一個非常好的辦法。你可以直接調用showImageStatic():

showImageStatic.call($(this)); 
0

我不認爲這是增加一個功能,以正確的方式,你應該做的

$.fn.extend({ "showImage" : showImageStatic }); 

,它應該讓你正確地調用showImage()。

+0

會將它添加到所有的jquery對象嗎? – rutherford

+1

這會將函數添加到所有jQuery對象 –

3

$(this)每次都創建一個新的實例。
第二個$(this)沒有您添加到第一個的方法。

相關問題