jquery对象没有方法'xyz'

时间:2012-07-01 15:16:19

标签: javascript jquery object

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

返回

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

这在每个迭代器的jquery之外工作,即如果我只将它应用于单个元素。怎么了?

3 个答案:

答案 0 :(得分:4)

每次调用$(this)都会重新创建一个jQuery对象。

这应该有效:

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

但我认为这不是处理它的好方法。你可以直接调用showImageStatic():

showImageStatic.call($(this));

答案 1 :(得分:3)

$(this)每次都会创建一个新实例 第二个$(this)没有您添加到第一个的方法。

答案 2 :(得分:0)

我不认为这是添加功能的正确方法,你应该这样做

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

它应该允许你正确调用showImage()。