Jqueryをクリックバインディングに組み合わせが正しく結合複数のコピー
-
26-09-2019 - |
質問
い問題作成時のコピーをテンプレートと結びつけます。click()メソッドをするのです。以下のjavascript例えば:
function TestMethod() {
var test = Array();
test[0] = 0;
test[1] = 1;
test[2] = 2;
// Insert link into the page
$("#test_div").html("<a href=\"#\"></a><br>");
var list;
for (x = 0; x < test.length; x++) {
var temp = $("#test_div").clone();
temp.find('a').html("Item #" + test[x]);
temp.click(function () { alert(x); });
if (list == undefined)
list = temp;
else
list = list.append(temp.contents());
}
$("#test_div2").append(list);
}
この問題を私は見たことな商品ユーザクリックで常時運行alert(2),ものをクリックすると、次のように最初の数です。
どのように取得します。
編集: 私は非常に簡単な例を示すべき問題はより鮮明に見せなければならない.どの項目をクリックすので、常に示すアラートボックスの番号2です。
解決
正しいについて知っておきましょう .valueOf()
JSを返しますプリミティブ値のBooleanオブジェクト.....
このようなことは起こらなくな ShowObject(5,'T');
... ShowObject(objectVal.valueOf(), 'T');
なぜ使用しないで objects[x].Value
す。 ShowObject(objects[x].Value, 'T');
WOOOOOSSSHHHH!
で深く...I見解---
で休んで本当にそのように...
この溶液に、
temp.find('a').bind('click', {testVal: x},function (e) {
alert(e.data.testVal);
return false;
});
ベスト説明 本書をお読みください...途中のページのこと パイベントデータ
クモの上記コード
他のヒント
行きたいという問題から生じる誤解の範囲で可能です。(私の謝罪について知っておきましょ間違っています。)
function () {
for (...) {
var foo = ...;
$('<div>').click(function () { alert(foo); }).appendTo(...);
}
}
JavaScriptでは、 の機能を持つ新しい範囲 (通称として 閉鎖).
なので、毎回の for
ループを知り、同じ foo
, 以降、その範囲は function
, なので、 for
.にもイノベーションをここまでのイベントが定義されています。末までにループを、毎 click
知と同じ foo
やノウハウで最後の値で割り当てられます。
このいずれかを内部に閉鎖とすぐに実行されるごとに、匿名の機能:
function () {
for (...) {
(function (foo) {
$('<div>').click(function () { alert(foo); }).appendTo(...);
})(...);
}
}
または、コールバックに基づく機能など jQuery.each
:
function () {
$.each(..., function (i, foo) {
$('<div>').click(function () { alert(foo); }).appendTo(...);
});
}
お問題になったと思い、後者注の変化 objects[x]
わずか object
):
var list;
jQuery.each(data.objects, function (x, object) {
// Clone the object list item template
var item = $("#object_item_list_template").clone();
// Setup the click action and inner text for the link tag in the template
var objectVal = object.Value;
item.find('a').click(function () { ShowObject(objectVal.valueOf(), 'T'); }).html(object.Text);
// add the html to the list
if (list == undefined)
list = item;
else
list.append(item.contents());
});