jQuery启动许多按钮

时间:2016-08-11 07:48:02

标签: javascript jquery

我一直试图解决这个可能非常简单的问题。

我有动态生成的链接,例如#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。

我在这里做错了什么?

谢谢..

2 个答案:

答案 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个元素。

&#13;
&#13;
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;
&#13;
&#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>,内部函数会记住创建它的环境!

&#13;
&#13;
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;
&#13;
&#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>