使用jQuery data()方法存储函数

Yuv*_*rmi 25 javascript jquery

jQuery .data()文档说明如下:

The .data() method allows us to attach data of any type to DOM element
Run Code Online (Sandbox Code Playgroud)

我假设"任何类型"也指功能.假设我有一个id为foo的div:

<div id="foo">Foo!</div>
Run Code Online (Sandbox Code Playgroud)

我想在其中存储一个say带有参数的函数.根据文档,我将以这种方式存储函数:

$("#foo").data("say", function(message){
   alert("Foo says "+message);
});
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我希望这样做时,如何使用参数调用该函数.

$("#foo").data("say"); 应该返回函数,但是如何将参数传递给它?

谢谢!

Kob*_*obi 42

存储函数的更好的替代方法data是使用自定义事件.这可以很容易地做到ontrigger:

$('#foo').on('say', function(e, arg){
    alert('Foo says ' + arg);
});

$('#foo').trigger('say', 'hello');
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/tW66j/

注意:在早期版本的jQuery(直到1.7)中,.bind使用的是代替.on.

  • 对于几年后回到这里的人来说,'bind'已被折旧,转而支持'on'.$('#foo').on('say',function(e,arg){alert('Foo说'+ arg);}); (2认同)

Dar*_*rov 27

var myFunction = $("#foo").data("say");
myFunction(someParameter);
Run Code Online (Sandbox Code Playgroud)

  • `$("#foo").data("say")("hello");`似乎也可以. (11认同)