在追加函数后访问jquery元素

时间:2012-02-22 21:29:19

标签: jquery

我使用append函数来将一些div添加到另一个元素

('#test-append').append("<div class='new_div'><b>some text</b></div>")

一切都很顺利,我可以看到添加的div,`但我还需要在那之后访问div选择器以便用这个div做一些事情,例如隐藏它 所以我使用下面的

$('.new_div').click(function(){
            do somthing here
        });

但即使我只是使用简单的警报('hi')调用它也无法正常工作。似乎jquery无法识别附加类(我也尝试使用Id,我得到相同的结果)

我将在这个问题上获得一些帮助

由于

5 个答案:

答案 0 :(得分:16)

在jquery 1.7之前,您需要使用live()或delegate()将事件绑定到元素,忽略它们是否在绑定时存在。

从jquery 1.7开始,你可以使用

$('root-element').on('click', 'selector', function () { do it })
上面的

根据jaspers评论

进行编辑

答案 1 :(得分:3)

您可以追加元素,然后选择它,因为它将是原始选择的子元素:

$('#test-append').append("<div class='new_div'><b>some text</b></div>").children('.new_div').click(...);

或者您可以使用附加元素的.appendTo(),但也会保留它们:

$("<div class='new_div'><b>some text</b></div>").appendTo('#test-append').click(...);

或者正如其他人所说,你可以在变量中保存对元素的引用,然后在稍后使用该变量来操作元素:

var $element = $("<div class='new_div'><b>some text</b></div>").appendTo('#test-append');
$element.click(...);//but you could have just chained the call like the previous example

答案 2 :(得分:1)

也许这不是推荐的方法......但它有效(jQuery 2.1.3)

$('.current_element').append("<div class='future_element'><b>some text</b></div>").find('.future_element').click(function(){
    console.log('you can see me if you click appended element');
});

和点击

时附加元素的版本
$('.current_element').click(function(){
    $('body').append("<div class='future_element'>anything</div>");
    $('.future_element').click(function(){
        $(this).text('do something with appended element'); //for example
    });
});

答案 3 :(得分:0)

我可能先声明div然后使用append to。

var newDiv=$("<div class='new_div'><b>some text</b></div>");

newDiv.appendto('#test-append');

newDiv.click(function(){ do somthing here });

答案 4 :(得分:0)

这将起作用

e.target.value