我有一个<ul>
标记,我想在其中添加一些<li>
标记。例如:
$('body').append("<ul id='myUL'>").find("ul");
$('#myUL').append('<li id='a'>a</li>');
$('#myUL').append('<li id='b'>b</li>');
我想给每个<li>
一个不同的点击事件。我怎么能做到这一点?
答案 0 :(得分:3)
尝试这样的事情:
$('<ul></ul>')
.attr('id', 'myUL')
.append(
$('<li>a</li>').click(function() {
alert('First one clicked');
})
)
.append(
$('<li>b</li>').click(function() {
alert('Second one clicked');
})
)
.appendTo('body')
;
答案 1 :(得分:1)
var firstLi = $('<li id='a'>a</li>');
firstLi.click(function() { ... });
$('body').append("<ul id='myUL'>").find("ul");
$('#myUL').append(firstLi);
$('#myUL').append('<li id='b'>b</li>');
答案 2 :(得分:0)
难道你不能在列表项上放一些标记并给它们所有相同的事件吗?或者,更好的是,使用live()
事件,然后您甚至不需要添加一个:
$('#myUL').append('<li id='a'>a</li>');
使用:
$(function() {
$("#myUL li").live("click", function() {
if (this.id == "a") {
...
}
});
});
否则只需颠倒顺序,语法就更好了:
$"<li></li>").attr("id", "a").text("a").appendTo("#myUL").click(function() {
...
});
你可以这样做:
$"<li id='" + a + "'>" + a + "</li>")..appendTo("#myUL").click(function() {
...
});
但是在处理动态输入时我不建议这样做,因为你可能无法正确转义特殊字符,而调用attr()
和text()
会正确地转义内容并使你不易受到XSS攻击的影响。< / p>
答案 3 :(得分:0)
试试这个
$('body').append("<ul id='myUL'>").find("ul");
$('#myUL').append('<li id='a' onclick="myeventHandler(event)" >a</li>');
$('#myUL').append('<li id='b' onclick="myeventHandler(event)" >b</li>');
function myeventHandler(ev){
var target = ev.target || ev.srcElement;
alert(target.id);
}