JQuery添加元素,包括删除监听器
问题描述:
什么是添加元素的最佳方式,一个链接去除自己,一个div? 这几乎工程:JQuery添加元素,包括删除监听器
function displayElements(objekt) {
$('#container').empty();
for(var key in objekt) {
if(objekt.hasOwnProperty(key)) {
$('#container').append('<div id="' + key + '">' +
key +
'<a id="del' + key + '">delete'</a></div>');
$('#del' + key).click(function() {
delete objekt[key];
displayElements(objekt);
});
}
}
}
奇怪的效果是,无论删除链接我点击它,总是最后一个元素被删除。 这是为什么,有没有一种更优雅的方式来实现这一目标?
问候,Eriq
答
可以替换成:
// build your markup
function displayElements(objekt) {
var container = $('#container').empty();
for (var key in objekt) {
if (objekt.hasOwnProperty(key)) {
container.append('<div id="' + key + '">' + key + '<a id="del' + key + '">delete< /a></div > ');
}
}
}
displayElements(objekt);
// bind to all anchors who's ids start with 'del'
$("#container").on("click", "a[id^='del']", function() {
$(this).remove();
});
答
我会移动事件东西跳出循环:
function displayElements(objekt) {
$('#container').empty();
for (var key in objekt) {
if (objekt.hasOwnProperty(key)) {
var $div = $('<div />');
$div.prop('class', 'delete');
$div.append($('<a />').attr('id', 'del' + key).text('delete'));
}
}
}
$('.delete').on('click', 'a[id^="del"]', function() {
// Delete your stuff
});
感谢 - 它的伟大工程,是清洁这条路! $(this).remove()删除了链接而不是div。我使用$(this).parent()。remove()并完成。再次感谢! – eriq 2012-01-15 19:37:01