无法使用新ID访问元素

时间:2014-10-10 22:49:23

标签: javascript jquery

我正在使用新的属性来访问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。

有人可以告诉我为什么吗?

3 个答案:

答案 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 });它可能有用。告诉我它没有。