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

返回

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

运行时。这在 jquery 每个迭代器之外工作,即如果我只是将它应用于单个元素。这是怎么回事?

4

3 回答 3

4

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

这应该有效:

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

但我认为这不是一个很好的处理方式。您可以直接调用 showImageStatic() :

showImageStatic.call($(this));
于 2012-07-01T15:21:44.800 回答
3

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

于 2012-07-01T15:21:36.597 回答
0

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

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

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

于 2012-07-01T15:18:43.450 回答