2

我了解您需要使用“.on”来使用页面加载后通过 jquery 加载的代码。(至少我认为它是这样工作的)

所以我尝试了,但不知何故它根本没有做任何事情。控制台中也没有错误。

$("#forgot_password").click(function(){
  var forgot_password = '<div id="toLogin" style="cursor:pointer;">Prijava</div>'
  $("#loginPopupForm").html(forgot_password);                                       
});

$("#toLogin").on("click", function(){
    alert("Hello");
});

因此,当我单击 #forgot_password 时,它会执行第一次单击功能。但是当我点击 #toLogin 它什么也没做,我认为这是因为当我点击 #forgot_password 时它加载了 jquery

4

5 回答 5

6

尝试这个

$("#loginPopupForm").on("click", "#toLogin", function(){
    alert("Hello");
});
于 2013-04-23T12:32:36.490 回答
1

您需要绑定到页面加载时存在body元素,例如。只需将您的代码更改为如下所示

$("body").on("click", "#forgot_password", function(){
  var forgot_password = '<div id="toLogin" style="cursor:pointer;">Prijava</div>'
  $("#loginPopupForm").html(forgot_password);                                       
});

$("body").on("click", "#toLogin", function(){
    alert("Hello");
});
于 2013-04-23T12:33:12.863 回答
0

您将其设置on为错误的东西。你希望它是:

$(document).on('click', '#toLogin', function() {alert('hello') });

在您执行其他单击事件之前,该 ID 不存在,因此 jQuery 没有找到任何元素来设置单击事件。您需要有一个已在 DOM 中呈现的元素来设置事件。

于 2013-04-23T12:33:15.340 回答
0

您对这个问题完全正确: on() 仅针对运行时已经存在的元素。您在 jQuery 中需要的称为 Delegated 事件,并且在Jquery 文档页面上有很好的解释。代码的区别很小,但这是你应该做的。

于 2013-04-23T12:35:40.893 回答
-1

您必须指定父元素

$("#toLogin").on("click","#loginPopupForm", function(){
    alert("Hello");
});

在 on 的第二个参数中

于 2013-04-23T12:36:51.437 回答