jQuery的创建的。点击功能的“数组”
问题描述:
我有一套的div:jQuery的创建的。点击功能的“数组”
<div id="div_01">ASD</div>
<div id="div_02">ASD</div>
<div id="div_03">ASD</div>
我想创建一个组。点击功能为这些div:
我尝试这样做:
for (var i = 1; i < 4; i++) {
var picName = "#BSViolenceDiv_0" + i.toString();
//alert("\nI have for i: " + i + ": " + picName);
$("#div_0" + i.toString()).click(function(){
$("#div_0" + i.toString()).animate({opacity:1}, 1000);
});
}
它不工作,因为我最终被3
我做了什么错?
答
这将是更好,如果你可以使用一个全球性的,而不是类(如my_div
),如:
<div id="div_01" class="my_div">ASD</div>
<div id="div_02" class="my_div">ASD</div>
<div id="div_03" class="my_div">ASD</div>
然后click
事件附加到这个类,这样你就不会在所有的div
“需要循环s:
$(".my_div").click(function(){
$(this).animate({opacity:1}, 1000); // "$(this)" refer to the clicked div
})
希望这会有所帮助。
$(".my_div").click(function(){
$(this).animate({opacity:1}, 1000);
})
.my_div{
opacity: 0.3;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div_01" class="my_div">ASD</div>
<div id="div_02" class="my_div">ASD</div>
<div id="div_03" class="my_div">ASD</div>
答
变量执行我已经达到Click事件处理程序的代码之前,其最终价值,所以它会一直使用该单击处理程序终值,并作为结果选择器"#div_0" + i.toString()
将不会引用点击的元素。
但是,您并不需要i来引用点击的元素。只需使用this
:
替换:
$("#div_0" + i.toString()).animate
有:
$(this).animate
那是你错误的本质。但正如其他人所说,你不需要为每个div
创建一个单独的处理程序。只需为所有人创建一个,例如通过为他们创建一个类,然后使用它来选择div
元素。
我很困惑你的问题。 –
您不需要创建一大堆'click'事件处理程序。只需使用一个类,然后将该单击处理程序绑定到该类,就像@ Zakaria的答案一样。 –