0

したがって、学習中に間違ってアプローチしている可能性がありますが、ここで何が間違っているのかわかりません (おそらく単純な間違いですが、問題があります)。だから私はマークアップ内に、ダイアログからの選択を可能にするボタンクリックと、ダイアログの送信ボタンには、いくつかのロジックを実行して文字列を追加するカスタム関数の呼び出しが含まれています。

buildListElementItem += "<li>something</li>";
$("#my-list").append(buildListElementItem);

次に、クリックをバインドします。これは、これらのリスト項目のそれぞれが選択パネル タイプのものを表す必要があるためです。

$("#my-list li").bind('click', function () {
   //processing stuff
});

すべてが正常に機能しますが、このリストに複数のアイテムを(次々に)追加し、単一のアイテムをクリックすると、それぞれがロールスルーされ、それぞれが存在しないため混乱し、これはそれを単品……

この関数/etcにはもっとたくさんありますが、ここでの私のアプローチは間違っていると思いますか??

Li の文字列に追加するクラスのようにセレクターを変更しようとしました。.on、.live、.delegate、またはバインド クリックの代わりに見つけられるものを使用してみました。

おそらく、これはこれを実行しようとする単純なアプローチ タイプのエラーですが、これに関するヘルプやアドバイスなどをいただければ幸いです。

編集:明確にするためにさらに追加するだけです

ダイアログを使用すると、ユーザーは選択/ドロップダウンから項目を選択できます。ボタンクリック (jquery ui) には、以下のアイデアを呼び出して、選択パネルとして機能するリスト要素に項目を追加する機能があります。そのため、パネルに必要なアイテムを入力し、各アイテムをクリックしてデータを入力し、そのアイテムに関連付けることができます。

function addNewListItem(passedType)
{
    var buildListElementItem = "<li>" + passedType + "</li>";
    $("#my-list").append(buildListElementItem);
    $("#my-list li").bind('click', function () {
       otherStuff();
});

上記を行うと、これによりすべての要素が何度もバインドされると思いますか? 確かではありませんが、これは、そのパネルの単一の li アイテムをクリックすると、パネル上のすべての li アイテムを処理することを除いて機能します (otherStuff 関数)。例から、問題またはこれが機能しない理由を理解し始めていると思いますが、その場合、私がやろうとしていることにどのようにアプローチしますか? いつも感謝しています!}

4

1 に答える 1

2

「それぞれがない」と言うと、それ$("#my-list li")が jQuery セレクターであることを省略します。つまり、式に一致するすべての要素を返します。この場合、#my-list の子ツリー内のすべての li アイテムです。したがって、bind を呼び出すと、既に要素に追加されている各 li アイテムにバインドされます。

あなたが探しているのは、これに沿ったものです:

buildListElementItem = $("<li>something</li>"); //constructs a jquery object you can bind to
buildListElementItem.bind('click', function () {
   //processing stuff
});
$("my-list").append(buildListElementItem);

このようにして、要素が追加される前にバインドします。

于 2013-03-12T12:36:02.430 に答える