2014-09-30 25 views
1

我想給一個DOM元素的自定義屬性分配一個函數。使用jQuery。如何設置元素的屬性以包含使用jQuery的函數?

.prop(String,function)不會將該函數分配給指定的屬性,但會調用該函數並分配其結果。

我有一個醜陋的解決方案:

$("#a").prop(
    "customAttr", 
    function() { 
     return function() { 
      $("#a").text("B"); 
     }; 
    } 
); 

http://jsfiddle.net/rapik/fyn6zh85/

有沒有什麼更好的辦法來做到這一點(使用jQuery)?

+2

這似乎是一個非常糟糕的主意。 jQuery屬性應該表示關於元素的信息,而不是要在其上調用的函數。你能分享一下你真正想要解決的問題嗎,看看我們能否提出一個更好的解決方案? – StriplingWarrior 2014-09-30 16:58:03

+0

我的應用程序查找可能包含一個函數的可選自定義屬性,如果存在該函數將被調用。幾乎像onclick屬性。我正在尋找從代碼中設置這樣一個屬性的方法。 – Andrej 2014-09-30 17:08:45

回答

2

我是猜測您試圖將此函數與這些對象關聯的原因是,您可以在應用程序中發生某些特定事件時導致該函數被調用。更好的方法是使用事件

// set up the event handler 
$("#a").on('somecustomevent', function() { $(this).text("B"); }); 

// Then, where you want that function to be invoked, trigger it. 
$("#a").trigger('somecustomevent'); 
+1

謝謝。這正是我所期待的。我正在考慮使用.on(),但以後不知道如何調用它。 – Andrej 2014-09-30 17:09:46

相關問題