【发布时间】:2009-05-15 14:20:17
【问题描述】:
jquery 有个小问题:我需要做这样的事情:
$(document).ready(function(){
links = {};
links.a = "Link a";
links.b = "Link b";
links.c = "Link c";
for (x in links){
$("#" + x).css("border","1px solid #000");
$("#" + x).click(function(){
alert(x);
});
}
});
</script>
<div id="a">a</div><br />
<div id="b">b</div><br />
<div id="c">c</div><br />
这样,当您单击 div#a 时,您将收到“链接 a”警报、div#b 上的“链接 b”等等... 问题是,如果您运行此代码,单击每个元素都会给出 alert("Link c") 作为结果,似乎只有最后一个函数变体被分配给每个 div...
当然,我可以通过编辑函数来处理 div 的 id 并使用 $(this) 来破解它,但是出于好奇:有没有办法让这个循环工作?通过创建新函数并将其分配给函数中的每个元素?
提前谢谢...
【问题讨论】:
-
仅供参考,如果你链接你的 jQuery 而不是重新选择选择器,它会更整洁一些。 示例:
$('#'+x).css('border', '1px solid #000').click(fn);