在jQuery中查找绑定到函数的所有元素?

时间:2015-11-24 21:06:51

标签: jquery function binding

所以我有一个jQuery函数:

$("#el01").myFunc();
$("#el02").myFunc();
$("#el03").myFunc();

是否有简单的方法可以找出DOM中哪些元素已绑定到该函数,而无需在对象或数组中手动​​存储引用?

2 个答案:

答案 0 :(得分:0)

有几个常见的选择!

一种常见的方法是用类或数据属性来装饰元素,如果你触摸它们(留下足迹),那么你可以用选择器查找它们:

$('.myFuncified')...

或者你可以将它们留在一个存储状态的对象中(你说你不想这样做......这很公平)。

但是除非你留下一些足迹,否则没有办法发现你已经触及了一个元素。

答案 1 :(得分:0)

这里的核心问题是什么是myFunc ?这是真正的罪魁祸首。可以轻松修改它以了解它的作用。

(function(){
    var stored = $.myStored = [];
    $.fn.myFunc = function(args){
        this.each(function(){ stored.push(this); });
    }
})()

现在您可以轻松访问存储的元素。当然有几种方法可以实现这一点,但是想法是原型函数必须记录它遇到的元素。

在您的示例中,您可以使用上面的代码段

执行此操作



    (function(){
        var stored = $.myStored = [];
        $.fn.myFunc = function(args){
            this.each(function(){ stored.push(this); });
        }
    })()

$("#el01").myFunc();
    $("#el02").myFunc();
    $("#el03").myFunc();
    $($.myStored).css('color','red');

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="el01">el01</div>
<div id="el02">el02</div>
<div id="el03">el03</div>
&#13;
&#13;
&#13;