【问题标题】:Call own method in jQuery queue在 jQuery 队列中调用自己的方法
【发布时间】:2024-01-09 08:24:02
【问题描述】:

我在 jQuery 中创建了自己的方法:

$.fn.plop = function(){
    // Method 
};

我正在尝试在队列中调用它,例如:

$(elems[0]).plop().delay(800).fadeOut();

但是 Firefox 返回错误:

TypeError: $(...).plop(...) 未定义

对导致问题的原因有任何想法吗?谢谢。

【问题讨论】:

  • .plop() 是否返回一个 jQuery 对象?
  • 感谢您的回答,在我的情况下,我只需要调用一个基本的 JavaScript 函数。所以我在队列中使用“.animate({opacity: 1},{step: function() {plop();}})”,并调用我的函数 plop()。再次感谢。

标签: jquery methods call undefined


【解决方案1】:

如果你希望它是可链接的,你需要在你的函数中返回 jQuery。只需return $; 即可。

例子:

$.fn.plop = function(){
    // Method
    return this.html('bar'); // html() returns jQuery
};

$('#myDiv').plop().delay(800).fadeOut();

http://jsfiddle.net/mUuhF/

【讨论】:

    【解决方案2】:

    要正确扩展 jQuery,您需要编写如下方法:

    $.fn.plop = function () {  
        return this.each(function () {
    
            // Do something for each element
    
        });
    };
    

    这将允许您在任何 jQuery 元素集合上运行 .plop(),将行为或操作应用于每个元素,并且它将返回原始集合,以便您可以继续链接其他方法调用。

    【讨论】: