不确定为什么以下css选择器无法正常工作。想要在除DOM中的最后一个字段之外的所有字段中输入100。更喜欢纯css解决方案,即不在jQuery中添加.not(":last")。
$("input[id^=FIELD]:not(:last-child)").val("100");

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="FIELD1" value="2">
<input id="FIELD2" value="2">
<input id="FIELD3" value="2">
<input id="FIELD4" value="2">
&#13;
答案 0 :(得分:2)
您的代码很好,但需要parent
的明确:last-child
元素才能在StackOverflow代码段中使用。
通常没有在StackOverflow上显式添加body
,这将是自动插入的body
元素,但由于某些与StackOverflow片段工作原理相关的奇怪原因,您明确需要在SO上添加父元素让选择器按预期工作。
我刚用CodePen和JSBin检查过,两者似乎都产生了同样的问题:
function usingVanillaJs() {
Array.from(document.querySelectorAll("input[id^='FIELD']:not(:last-child)")).forEach((input) => {
input.value = 100;
})
}
function usingJquery() {
$("input[id^='FIELD']:not(:last-child)").val(200);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input id="FIELD1" value="2">
<input id="FIELD2" value="2">
<input id="FIELD3" value="2">
<input id="FIELD4" value="2">
</div>
<button onclick="usingVanillaJs()">Vanilla JS</button>
<button onclick="usingJquery()">jQuery</button>
答案 1 :(得分:1)
$("input[id^=FIELD]").not(":last").val("100");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="FIELD1" value="2">
<input id="FIELD2" value="2">
<input id="FIELD3" value="2">
<input id="FIELD4" value="2">
&#13;
对于CSS选择器,只需将last-child
更改为last
:
$("input[id^=FIELD]:not(:last)").val("100");
如果您向选择器添加父级,last-child
也可以使用:
$("#parentDiv input[id^=FIELD]:not(:last-child)").val("100");
答案 2 :(得分:-1)
:last-child
无法使用,因为它需要parent
所以请使用:last-of-type
$('input[id^=FIELD]:not(:last-of-type)').val("100");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="FIELD1" value="2">
<input id="FIELD2" value="2">
<input id="FIELD3" value="2">
<input id="FIELD4" value="2">
父母:
$('#mydiv input[id^=FIELD]:not(:last-child)').val("100");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">
<input id="FIELD1" value="2">
<input id="FIELD2" value="2">
<input id="FIELD3" value="2">
<input id="FIELD4" value="2">
</div>