2015-11-24 42 views
1

所以我有一個jQuery函數:在jQuery中查找綁定到函數的所有元素?

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

有沒有簡單的方法來找出在DOM元素已經被綁定到功能,無需手動保存在一個對象或數組引用?

+0

類[相關](http://stackoverflow.com/questions/2518421/jquery-find-事件處理程序註冊與對象),但它是相反的。我不認爲jQuery跟蹤,但我正在尋找。 –

回答

0

有幾個常見的選項!

一種常見的方法是,如果你觸摸它們(留個腳印),這樣一來,你可以看看他們與選擇裝飾與類的元素,或數據屬性:

$('.myFuncified')... 

或者你可以將它們的標籤保存在一個存儲狀態的對象中(你說你不想這麼做......這很公平)。

但是,除非留下一些足跡,否則沒有辦法找出觸摸了某個元素。

+0

啊,我明白了。我認爲可能有一種方法可以循環播放dom,並查看是否有任何內容被綁定......或者,如果某個函數綁定的內容以某種方式記錄在函數的原型中。添加類很簡單! –

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>

相關問題