不能选择我用jQuery加载的id

时间:2013-04-23 12:30:57

标签: javascript jquery

我知道您需要使用“.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

5 个答案:

答案 0 :(得分:6)

试试这个

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

答案 1 :(得分: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");
});

答案 2 :(得分:0)

您将on设置为错误的内容。你希望它是:

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

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

答案 3 :(得分:0)

你对这个问题完全正确:on()只针对运行时已经存在的元素。 您在jQuery中需要的是名为Delegated事件,并在Jquery doc page上得到了很好的解释。 代码的差异很小,但这是你应该做的。

答案 4 :(得分:-1)

您必须指定父元素

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

在on

的第二个参数中