2013-07-02 35 views
-3
$(function() { 
    $(".items").on('click', 'a', function() { 
     //nothing gets executed here, alert wont come 
     alert("doesn't work") 
    }, function() { 
     //this function gets executed 
     alert("works") 
    }); 
}); 

为什么首先不能工作,是不是应该这样工作?我的选择是什么?使用jQuery在()上执行功能的顺序是什么?

+1

你究竟想要做什么?我猜你的第三个参数(第一个函数)作为数据传入处理程序。 http://api.jquery.com/on/#on-events-selector-data-handlereObjectObject [FIDDLE](http://jsfiddle.net/Kjyac/) –

+0

文档清楚说明了这应该如何工作。 – Mathletics

回答

1

on()不具有多个处理程序一样hover()一样。第三个参数是将数据传递给处理程序。如果你想使用data参数作为处理程序的回调函数,我想这是一个选项。这将调用你的两个功能:http://jsfiddle.net/M4x4u/1/

$(function() { 
    $(".items").on('click', 'a', function() { 
     //nothing gets executed here, alert wont come 
     alert("doesn't work") 
    }, function (e) { 
     //this function gets executed 
     alert("works") 
     e.data(); 
    }); 
}); 
+0

你几乎回答了问题,但为什么第二个函数首先被执行。 – Mike

+0

第二个函数是处理程序,第一个函数是传递到处理程序的数据。在上面的例子中,我将数据(第三个参数)传递给处理程序(第四个参数),然后在其中调用它。 – smerny

+0

但这只适用于第一次迭代 – Mike

2

你的第二个函数成为事件处理程序。你的第一个功能是作为数据传递。

0

看起来你很困惑ontoggle

$(function() { 
    $(".items").on('click', 'a', function() { 
    alert("this works now") 
    }); 
});