0

我有这个:

$("#socialsLogin").on("click", function() {
    var login = $("#socialsLoginField").val();
    var passwd = $("#socialsPasswordField").val();
    SocialsStart(login, password);
});

还有这个:

<a href="javascript:void(0)" id="socialsLogin" class="button">Disconnected</a>

而且我的点击事件没有触发 - 我做错了什么?如果我用 .live() 更改 .on(),一切正常。但我不想使用 .live() 因为它已被弃用(是的,我使用的是 jquery 1.9)

编辑:它不是重复的。当我使用$(document).on("click", "#socialsLogin", function() {它时,它可以在页面上的任何地方使用——我可能会单击图像并启动它。绝对不是预期的那样。而且$(document.body).on("click", "#socialsLogin", function() {对我根本不起作用。

Edit2:这是我的小提琴:http: //jsfiddle.net/JeDLW/1/

4

2 回答 2

2

要替换live,请on像这样使用:

 $(document.body).on("click", "#socialsLogin", function() {

jQuery 集合接收事件,然后将其委托给与作为参数给出的选择器匹配的元素。这意味着与使用时相反,live执行代码时必须存在 jQuery 集合元素。

请注意,此绑定代码应在ready回调中执行:

$(function() {
     $(document.body).on("click", "#socialsLogin", function() {
         ...
     });
});

编辑 :

正如我所怀疑的那样,您的小提琴表明您使用了多个带有 id 的元素"socialLogin"。那就是问题所在。更改字段集的 ID。

于 2013-04-05T19:52:32.290 回答
2

试试这样:

$(document).on("click", "#socialsLogin", function() {
    var login = $("#socialsLoginField").val();
    var passwd = $("#socialsPasswordField").val();
    SocialsStart(login, password);
});

或者你可以简单地使用这个:

$("#socialsLogin").click(function () {
    var login = $("#socialsLoginField").val();
    var passwd = $("#socialsPasswordField").val();
    SocialsStart(login, password);
});
于 2013-04-05T19:52:39.970 回答