jQuery 语法正确的选择器只会显示空对象
jQuery selector that is syntactically correct only brings up empty object
大家晚上好。一个 jQuery 正确的选择器 returns 一个空对象。变量都已定义并具有值(我 console.log 它们)但我总是得到一个空对象。我错过了什么?
这里是有问题的代码。发布所有代码是多余的。
// reihe is 0, 1, or 2
var mycell = $('span:nth-child(' + reihe + ')');
上面的选择器returns控制台中的这个:
Object { length: 0, prevObject: {…} }
有问题的 HTML 是...
<span align="center" id="r1">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r2">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r3">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
当然,jQuery 已加载。
您使用 :nth-child
(但不在语法中)发出 is。
鉴于提供的 HTML,您的 3 倍跨度是
:nth-child(1)
:nth-child(3)
:nth-child(5)
Because jQuery's implementation of :nth- selectors is strictly derived from the CSS specification, the value of n is "1-indexed", meaning that the counting starts at 1
所以“第一个”是 :nth-child(1)
。
不过:nth-child(2)
是第一个<br/>
所以你的“第二个”跨度是 :nth-child(3)
并且 (4)(br) 和第三个跨度 (5) 相同。
var reihe = 1;
$('span:nth-child(' + reihe + ')').css("color", "red");
reihe = 3;
$('span:nth-child(' + reihe + ')').css("color", "blue");
reihe = 5;
$('span:nth-child(' + reihe + ')').css("color", "cyan");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<span align="center" id="r1">
<div class="target droppable" data-droppable="true">x</div>
<div class="target droppable" data-droppable="true">x</div>
<div class="target droppable" data-droppable="true">x</div>
</span>
<br>
<span align="center" id="r2">
<div class="target droppable" data-droppable="true">y</div>
<div class="target droppable" data-droppable="true">y</div>
<div class="target droppable" data-droppable="true">y</div>
</span>
<br>
<span align="center" id="r3">
<div class="target droppable" data-droppable="true">z</div>
<div class="target droppable" data-droppable="true">z</div>
<div class="target droppable" data-droppable="true">z</div>
</span>
</div>
:nth-child(0)
得到空 jquery 对象的原因是它们从 1 开始。
您还会为 span:nth-child(2)
获得一个空的 jquery 对象,因为 :nth-child(2)
不是跨度。
使用 span:nth-child(2)
与 $(":nth-child(2)").filter("span")
相同
考虑改用 .eq()
。
$(function() {
var reihe = 0;
var myCell = $('span').eq(reihe);
console.log(myCell.attr("id"));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span align="center" id="r1">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r2">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r3">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
此外,由于每个都使用一个 ID,因此您也可以在选择器中使用该 ID。
$(function() {
var reihe = 1;
var myCell = $('span[id="r' + reihe + '"]');
console.log(myCell.attr("id"));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span align="center" id="r1">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r2">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r3">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
大家晚上好。一个 jQuery 正确的选择器 returns 一个空对象。变量都已定义并具有值(我 console.log 它们)但我总是得到一个空对象。我错过了什么?
这里是有问题的代码。发布所有代码是多余的。
// reihe is 0, 1, or 2
var mycell = $('span:nth-child(' + reihe + ')');
上面的选择器returns控制台中的这个:
Object { length: 0, prevObject: {…} }
有问题的 HTML 是...
<span align="center" id="r1">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r2">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r3">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
当然,jQuery 已加载。
您使用 :nth-child
(但不在语法中)发出 is。
鉴于提供的 HTML,您的 3 倍跨度是
:nth-child(1)
:nth-child(3)
:nth-child(5)
Because jQuery's implementation of :nth- selectors is strictly derived from the CSS specification, the value of n is "1-indexed", meaning that the counting starts at 1
所以“第一个”是 :nth-child(1)
。
不过:nth-child(2)
是第一个<br/>
所以你的“第二个”跨度是 :nth-child(3)
并且 (4)(br) 和第三个跨度 (5) 相同。
var reihe = 1;
$('span:nth-child(' + reihe + ')').css("color", "red");
reihe = 3;
$('span:nth-child(' + reihe + ')').css("color", "blue");
reihe = 5;
$('span:nth-child(' + reihe + ')').css("color", "cyan");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<span align="center" id="r1">
<div class="target droppable" data-droppable="true">x</div>
<div class="target droppable" data-droppable="true">x</div>
<div class="target droppable" data-droppable="true">x</div>
</span>
<br>
<span align="center" id="r2">
<div class="target droppable" data-droppable="true">y</div>
<div class="target droppable" data-droppable="true">y</div>
<div class="target droppable" data-droppable="true">y</div>
</span>
<br>
<span align="center" id="r3">
<div class="target droppable" data-droppable="true">z</div>
<div class="target droppable" data-droppable="true">z</div>
<div class="target droppable" data-droppable="true">z</div>
</span>
</div>
:nth-child(0)
得到空 jquery 对象的原因是它们从 1 开始。
您还会为 span:nth-child(2)
获得一个空的 jquery 对象,因为 :nth-child(2)
不是跨度。
使用 span:nth-child(2)
与 $(":nth-child(2)").filter("span")
考虑改用 .eq()
。
$(function() {
var reihe = 0;
var myCell = $('span').eq(reihe);
console.log(myCell.attr("id"));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span align="center" id="r1">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r2">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r3">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
此外,由于每个都使用一个 ID,因此您也可以在选择器中使用该 ID。
$(function() {
var reihe = 1;
var myCell = $('span[id="r' + reihe + '"]');
console.log(myCell.attr("id"));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span align="center" id="r1">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r2">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>
<br>
<span align="center" id="r3">
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
<div class="target droppable" data-droppable="true"></div>
</span>