2

私はJQueryを学習中です。クリックすると、別のJavascript関数をトリガーするリンクのリストを探しています。私が今持っているコード(以下)は<li>タグを正常に作成しますが、内部JQueryは、リンクタグがラップされたテキストではなく、オブジェクト( "1. [object Object]")を返します。

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

あなたの助けは大歓迎です!

4

2 に答える 2

5

htmlの代わりに使用しtextます。

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

PSonclickイベントをバインドするために属性を使用しないことをお勧めします。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');
于 2012-05-11T18:06:10.907 に答える
3

作成された要素への追加を続行します。 htmlうまくいくかもしれませんが、追加する方が明確だと思います:

$("<li>", {id: 'respose'}).append(
   $("<a>", {text: data[i].name, onclick: doSomething})
).appendTo('ol.responseList');
于 2012-05-11T18:06:58.350 に答える