我正在学习JQuery,我希望有一个链接列表,点击时会触发另一个Javascript函数。我现在的代码(下面)使<li>
标签成功,但内部JQuery返回一个对象(“1. [object Object]”),而不是带有链接标签的文本。< / p>
$('<li></li>', {
text: $('<a></a>', {
text: data[i].name,
onclick: 'doSomething()'
}),
id: 'response'
}).appendTo('ol.responseList');
非常感谢您的帮助!
答案 0 :(得分:5)
使用html
代替text
。
$('<li></li>', {
html: $('<a></a>', {
text: data[i].name,
onclick: 'doSomething()'
}),
id: 'response'
}).appendTo('ol.responseList');
P.S。我建议不要使用onclick
属性来绑定事件。使用jQuery的事件API。
$('<li></li>', {
html: $('<a></a>', {
text: data[i].name
}).click(doSomething),
id: 'response'
}).appendTo('ol.responseList');
更新:如果你想将i
传递给doSomething
,你需要做这样的事情(在循环之外):
function createFunc(i){
return function(){
doSomething(i); // this will be the correct value of `i`
};
}
然后这样做:
$('<li></li>', {
html: $('<a></a>', {
text: data[i].name
}).click(createFunc(i)), // Yes, this should be `createFunc(i)`, it returns a function
id: 'response'
}).appendTo('ol.responseList');
答案 1 :(得分:3)
继续追加创建的元素。 html
也可能有用,但我认为附加更清楚:
$("<li>", {id: 'respose'}).append(
$("<a>", {text: data[i].name, onclick: doSomething})
).appendTo('ol.responseList');