我有一个div元素,我附加到body元素
$('<div class="tooltip"></div>').appendTo('body');
并为其分配一些HTML
$('div.tooltip').html('<a class="closeme">close me</a>');
我希望当用户点击“关闭我”链接时,附加div将被删除 所以我做了
$('a.closeme').click(function(){
$('div.tooltip').remove();
});
但即使我尝试了一个简单的
,我也没有得到任何回应$('a.closeme').click(function(){
alert('hi');
})
我没有得到任何回复。 我怀疑它的行为是这样的,因为我使用了appenTo方法。如果有人能告诉我如何从appentTo元素中调用拍卖,我将不胜感激
答案 0 :(得分:3)
使用on()
方法将事件附加到当前存在的元素,或将来会出现:
$('parentElementSelector').on('click','.tooltip',
function(){
alert('the tooltip was clicked!');
});
在您的情况下,因为您要附加到body
元素:
$('body').on('click','a.closeme',
function(){
$(this).closest('.tooltip').remove();
});
参考:
答案 1 :(得分:2)
您可以通过这种方式构建它( working example )...
// create your new elements
$div = $('<div class="tooltip"></div>');
$a = $('<a class="closeme">close me</a>');
// attach the event to the created element
$a.click(function() {
alert("hi");
});
// combine them
$div.html($a);
// add them to the page
$div.appendTo('body');
答案 2 :(得分:1)
您的代码似乎对我有用,请参阅此fiddle。
您是否将其打包在$(document).ready(function() {});
构建它的最短路径可能是:
$('<div class="tooltip"><a class="closeme">close me</a></div>').appendTo('body').on('click', function() {$(this).remove()});
答案 3 :(得分:1)
你需要在关闭功能中添加一个直播事件,简单的点击功能将不起作用试试这个
$('.closeme').live('click',function(){
$('div.tooltip').remove();
});