调用脚本标记的JQuery选择器

时间:2012-12-06 11:21:12

标签: javascript jquery dom

我有以下正在开发的工具的html输出:

<button>a</button>
<script>$('what to wrtie here to select the previous button element?').click(function(){alert ('a clicked !');});</script>
<button>b</button>
<script>$('same here').click(function(){alert ('b clicked !');});</script>

我需要每个script标记中的选择器来选择前一个元素。 使用id选择器无法应用,因为该工具不会为元素生成ID。

感谢。

解答:

$('script').last().prev().click(...

正如Niklas所说,当前执行的脚本是列表中的最后一个

3 个答案:

答案 0 :(得分:3)

如果没有对按钮对象或脚本标记本身的id或其他类型的引用,这是不可能的。

这是不可能的,因为脚本不是从其元素位于DOM中的位置执行的。相反,它是参考整个窗口执行的。

实际上,这里有一个非常好的答案:How may I reference the script tag that loaded the currently-executing script?

简而言之,当前运行的脚本是列表中的最后一个元素。

答案 1 :(得分:1)

我无法做到这一点(指的是包含脚本的脚本标记)。这里最好的方法是为每个元素生成一个ID,并将您的脚本聚合到一个脚本标记中。


那就是正确的解决方案。这个秘密,顽皮的解决方案就是这个(剧透):

  

<button>a</button>
<script> //script#0001 $('script:contains("#0001")').prev().click(function(){ alert('foo'); });
</script>

<button>b</button>
<script> //script#0002 $('script:contains("#0002")').prev().click(function(){ alert('bar');
});
</script>

不要使用

答案 2 :(得分:1)

好吧,我真的不建议你先做什么,先谈谈你的方法, 这种代码应该包含在ready事件中,当DOM准备就绪时,所有与该事件关联的注册代码都将运行,因此无法理解代码所在的脚本标记


应该发生的事情是将所有脚本标记移动到自己的文件并使用选择器选择所需的元素,或使用prevnextparents等动态选择它们/ p>

修改

我错误的是无法获得脚本标签@Niklas的答案是正确的,但我仍然认为这样做是错误的