我正在使用新的属性来访问elemet。
HTML
<div class="element">Element1</div>
脚本是
$('.element').one("click", function()
{
$.getScript('/script.js');
});
$('#activated').click(function()
{
alert(1);
});
在script.js文件中:
$('.element').attr("id", "activated");
script.js将id #activated添加到div中,但.click()不会使用新ID。
有人可以告诉我为什么吗?
答案 0 :(得分:4)
$('#activated')
在任何元素具有该id之前进行评估,因此它不会找到任何元素,也不会将任何点击处理程序附加到任何元素。
您可以使用事件委派来解决此问题。单击处理程序将立即附加到文档正文,但只有当目标元素与“#activated”选择器匹配时才会触发其回调:
$(document.body).on('click', '#activated', function()
{
alert(1);
});
答案 1 :(得分:1)
执行行$('#activated').click(function()
时,文档中没有ID为activated
的元素,因此jQuery返回空集合,click
方法无声地失败。您可以使用事件委派技术:
$(document).on('click', '#activated', function()
或检查第一个事件处理程序中单击元素的ID:
$('.element').on("click", function()
{
if ( this.id === 'activated' )
{
// ...
}
else
{
$.getScript('/script.js');
}
});
答案 2 :(得分:0)
尝试$(document).on('click','#activated',function(){ // do somthing here });
它可能有用。告诉我它没有。