复杂选择由for循环生成的特定输入

时间:2014-10-04 18:45:25

标签: javascript jquery selector

我试图在for-loop生成的输入列表中选择一些特定输入,在for-loop生成的某些div中也是如此。这意味着选择过程有点混乱和困难,因为ids是动态的。

所以,这里有一个我拥有的样本,每个id都由for-loop生成:

<div id="block0">
    <input id="special0-0" class="block"></input>
    <input id="special0-1" class="block"></input>
    <input id="special0-2" class="block"></input>
    <input id="special0-3" class="block"></input>
</div>
<div id="block1">
    <input id="special1-0" class="block"></input>
    <input id="special1-1" class="block"></input>
    <input id="special1-2" class="block"></input>
    <input id="special1-3" class="block"></input>
</div>
<div id="item0">
    <input id="special0-0"></input>
    <input id="special0-1"></input>
    <input id="special0-2"></input>
    <input id="special0-3"></input>
</div>
<div id="item1">
    <input id="special1-0"></input>
    <input id="special1-1"></input>
    <input id="special1-2"></input>
    <input id="special1-3"></input>
</div>

我想选择id="special0-2 AND id="special1-2" 但不具有class="block"的输入。

我已经尝试了几种可能性,包括这两种对我有用的可能性:

var item2 = $("div[id|='item'] > input[id$='-2']");

var item2 = $("input[id|='special'][id$='-2'][class!='block']");

问题是,对于每个选项,console.log(item2)都会返回0,但我无法应用我之后计划的javascript更改。谢谢你的想法:)

JSFiddle

1 个答案:

答案 0 :(得分:1)

可能是这样:

$('[id^="item"]').children('[id$="-2"]:not(.block)'); // full
$('[id^="item"] > [id$="-2"]:not(.block)'); // short

首先选择ID为&#39; item&#39;的div,在那些找到ID为&#39; -2&#39;的那些div。

我建议你给根项目一个类。如果你总是想要第3个,那就结合起来了:

$('.classname').children('div:nth-child(3)'); // full
$('.classname > div:nth-child(3)'); // short