0

对象我在我的项目中使用了一些代码行,它们允许我做这样的事情:

<a href="#" data-click="test">Run test function</a>

点击它就会运行test()

$("body").delegate( "a[data-click]", "click", function(){
    var f = $(this).attr("data-click");

    eval(f + "();");
});

我现在的问题是,一个函数需要.currentTarget关于被点击元素的信息(jQuery 事件,特别是 )。我试过:

$("body").delegate( "a[data-click]", "click", function(event){
    var f = $(this).attr("data-click");
    eval(f + "(" + JSON.stringify(event) + ");");
});

但这不起作用,因为event它是一个循环对象。(而且我不知道序列化 jQuery 对象的方法,以便我可以反序列化它并且可以在其上调用 jQuery 函数)

那么如何传递 jQuery EventObject 呢?

4

1 回答 1

2

无需评估:

$("body").delegate("a[data-click]", "click", function(event) {
    var f = window[$(this).data("click")];
    f();
});

请注意,这只适用于您的函数在全局范围内(或可通过您可以指定的另一个对象而不是window全局对象)。

另请注意,您应该使用on而不是delegate

$("body").delegate("a[data-click]", "click", function(event) { // old
$("body").on("click", "a[data-click]", function(event) {       // new
于 2013-09-16T17:54:27.103 回答