我使用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,我得到相同的结果)
我将在这个问题上获得一些帮助
由于
答案 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