使用JQuery嵌套HTML标记

时间:2012-05-11 18:03:21

标签: javascript jquery html

我正在学习JQuery,我希望有一个链接列表,点击时会触发另一个Javascript函数。我现在的代码(下面)使<li>标签成功,但内部JQuery返回一个对象(“1. [object Object]”),而不是带有链接标签的文本。< / p>

$('<li></li>', {
    text: $('<a></a>', {
        text: data[i].name,
        onclick: 'doSomething()'
    }),
    id: 'response'
}).appendTo('ol.responseList');

非常感谢您的帮助!

2 个答案:

答案 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');