如果input不编辑DOM,如何在下面的代码中选择第一个(如果需要,使用jQuery)?
<input type="text"/> <!-- The element I want to select -->
<script>
// Select the input above
</script>
<input type="text"/>
Run Code Online (Sandbox Code Playgroud)
请注意,此代码示例之前和之后存在未知数量的输入和脚本标记,因此解决方案$("input:eq(1)")不起作用.
棘手的部分是在正在执行当前JavaScript input的script标记之前选择放置的位置.
没有必要问我为什么要这样做,这纯粹是为了它的美丽,我想这样做而不必在我的输入中添加随机id,如果可能的话.
编辑
这就是为什么大多数答案都不起作用的原因:http://jsfiddle.net/2WqfP/
我构建了一个jQuery插件,我目前正在以一种方式将DOM元素存储在一个数组中,主要是为了能够在这些元素旁边存储更多信息,而不必使用不那么快data().
该数组看起来像:
[
{ element: DOMElement3, additionalData1: …, additionalData2: … },
{ element: DOMElement1, additionalData1: …, additionalData2: … },
{ element: DOMElement2, additionalData1: …, additionalData2: … },
]
Run Code Online (Sandbox Code Playgroud)
这个插件的工作方式阻止我以可预测的顺序将这些元素推送到数组,这意味着DOMElement3实际上可以找到低于DOMElement2s 的索引.
但是,我需要按照它们包含的DOM元素在DOM中出现的顺序对这些数组元素进行排序.前面的示例数组一旦排序,将如下所示:
[
{ element: DOMElement1, additionalData1: …, additionalData2: … },
{ element: DOMElement2, additionalData1: …, additionalData2: … },
{ element: DOMElement3, additionalData1: …, additionalData2: … },
]
Run Code Online (Sandbox Code Playgroud)
这是当然,如果DOMElement1之前出现DOMElement2在DOM,和DOMElement2前DOMElement3.
jQuery add()方法以与DOM中出现的顺序相同的顺序返回一组DOM元素.我可以使用它,但要求是我使用jQuery集合 - 这意味着我必须重构上述插件的大部分以使用不同的存储格式.这就是为什么我认为这是最后的解决方案.