我一直试图解决这个可能非常简单的问题。
我有动态生成的链接,例如#l1,#l2 ..对于每个链接,我都有一个包含图像img。 Div具有与链接相对应的ID,例如#li1,单击时,应该使用id#di1切换div,依此类推。
我写了一个测试,在那里我迭代ID号并构造jquery按钮监听器。有些东西:
a = [1,2,3,4]; // those are link and div IDs
for (k=0;k<3;k++){
$("#"+"li"+a[k]).click(function() {
$("#"+"di"+a[k]).toggle();
});
}
但是这给了我的是所有链接上的听众,它只切换最后一个div!
所以:我在标签中有链接,点击后,应该切换一个带有相应ID的不同div。
我在这里做错了什么?
谢谢..
答案 0 :(得分:1)
在调用var bulkOps = [];
db.collection.find({}).snapshot().forEach(function(doc) {
doc.Employees.forEach(function(emp){
var newTypeID, num = emp.AccountNum;
switch (true) {
case (num < 10000):
newTypeID = "A1";
break;
case (num >= 10000 && num < 100000):
newTypeID = "A2";
break;
case (num >= 100000 && num < 1000000):
newTypeID = "A3";
break;
default:
newTypeID = "A";
break;
}
bulkOps.push({
"updateOne": {
"filter": { "_id": doc._id, "Employees.AccountNum": emp.AccountNum },
"update": {
"$set": { "Employees.$.TypeID": newTypeID }
}
}
});
});
// Send update request once in 500 batched operations only
if (bulkOps.length % 500 === 0) {
db.collection.bulkWrite(bulkOps);
bulkOps = [];
}
});
// Clear the remaining queue
if (bulkOps.length > 0) db.collection.bulkWrite(bulkOps);
时,click
的值为k
(由于3
),只需使用k++
上下文。
确保this
具有for-loop
条件以迭代k < 4
个元素。
4(0, 1, 2, 3)
&#13;
var a = [1, 2, 3, 4];
for (k = 0; k < 4; k++) {
$("#li" + a[k]).click(function() {
$(this).toggle();
});
}
&#13;
使用 方法:
使用
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <div id="li1">li1</div> <div id="li2">li2</div> <div id="li3">li3</div> <div id="li4">li4</div>
,内部函数会记住创建它的环境!
closure
&#13;
var a = [1, 2, 3, 4];
for (k = 0; k < 4; k++) {
$("#di" + a[k]).click((function(k) {
return function() {
$("#li" + a[k]).toggle();
}
})(k));
}
&#13;
答案 1 :(得分:1)
您还可以使用forEach()
以获得更清晰的JS代码(IMO):
// link and div IDs
var a = [1,2,3,4];
a.forEach(function (v)
{
$("#li" + v).click(function()
{
$("#di" + v).toggle();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li id="li1">one</li>
<li id="li2">two</li>
<li id="li3">three</li>
<li id="li4">four</li>
</ul>
<div id="di1">
<p>One</p>
</div>
<div id="di2">
<p>Two</p>
</div>
<div id="di3">
<p>Three</p>
</div>
<div id="di4">
<p>Four</p>
</div>