2014-09-30 20 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

相关问题