我很好奇为什么我需要这个索引
$(document).ready(function() {
$(".divToggle").each(function(index){
var buttonId = $(this)[0].attributes["id"].value.toString();
var idParts = buttonId.split('_');
var uniquePart = idParts[0] + "_" + idParts[1] + "_" + "divContentPanel";
$(this).click(function() {
$("#" + uniquePart).toggle("slow");
});
});
});
为什么我需要“var buttonId = $(this)[0]中的”[0]“......如果没有它,我得到一个属性[”id“]为空错误..
答案 0 :(得分:4)
改为使用
var buttonId = this.id;
或jQuery方式
var buttonId = $(this).attr("id");
答案 1 :(得分:2)
使用$(this)你仍然在jquery模型中,获取id的正确方法是.attr(“id”)
写$(this)[0]让你重新回到你写的那个DOM模型。
答案 2 :(得分:2)
$(this)[0]
正在做两件事 -
查看您的代码我相信您可以通过这样做获得相同的结果 -
var buttonId = this.id;
答案 3 :(得分:1)
尝试
var buttonId = $(this).attr("id");
答案 4 :(得分:1)
从技术上讲,只需稍加修改代码就不需要它。 jQuery选择器会发生什么,它们只是数组中的一堆元素引用。所以而不是
<div id ="myelement"></div>
你得到了
[<div id ="myelement"></div>]
使用$(this)
将this
放入数组中,并允许它与jQuery函数一起使用。如果您不使用jQuery函数,请使用this
。所以你的代码将成为
var buttonId = this.attributes["id"].value.toString();
答案 5 :(得分:1)
$(".divToggle").each(function(index, element){
var buttonId = element.id,
idParts = buttonId.split('_'),
uniquePart = idParts[0] + "_" + idParts[1] + "_" + "divContentPanel";
$(element).click(function() {
$("#" + uniquePart).toggle("slow");
});
});