1

JSを介してループにリスト要素を追加しようとしています。すべての要素<li><a>タグが含まれているので、タグを追加するたびに onClick イベントを追加したいと思い<a>ます。私はそうしようとします:

liCode = '<li><a href="#">Text using variable foo: ' + foo + '</a></li>';
$('#list').append(function() {
    return $(liCode).on('click', clickEventOccurs(foo));
});

ではclickEventOccurs、コンソール foo に出力するだけです。これは奇妙な方法で動作します。このイベントは、すべてのタグがリストに追加されているときに init でのみ実行されますが、クリックした後<a>は何も実行されません。適切な方法で動作させる方法 - clickEventOccurs のクリック実行コードで?

4

4 に答える 4

4

まず、コールバック関数ではなく、関数評価の結果を割り当てています。正しい方法では、次のようになります。

$('#list').append(function() {
    return $(liCode).click(function() {
        clickEventOccurs(foo);
    });
});

また、jQuery を使用しているため、イベント委任の利点を利用して、次のように.onメソッドを使用することもできます。

$('#list').on('click', 'li', function() {
    return clickEventOccurs(foo);
});
于 2013-07-29T09:30:33.870 に答える
1
于 2013-07-29T10:03:50.760 に答える
0

その関数に変数を渡すには、2 番目の匿名変数を作成する必要があります。そうしないと、clickEventOccurs 関数がコールバックとしてではなく、割り当て時に呼び出されます。

$('#list').append(function() {
    return $(liCode).click(function() {
      clickEventOccurs(foo)
    });
});
于 2013-07-29T09:31:06.557 に答える