1

我有以下我正在开发的工具的 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 所说,当前执行的脚本是列表中的最后一个

4

3 回答 3

3

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

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

实际上,这里有一个很好的答案:如何引用加载当前执行脚本的脚本标签?

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

于 2012-12-06T11:29:23.227 回答
1

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


上面是正确的解决方案。秘密,顽皮的解决方案是这样的(剧透):

<按钮>一个</按钮> 
<脚本> //脚本#0001 $('script:contains("#0001")').prev().click(function(){ 警报('foo'); });
</script>

<button>b</button>
<script> //脚本#0002 $('script:contains("#0002")').prev().click(function(){ 警报(“酒吧”);
});
</脚本>

不要使用它

于 2012-12-06T11:25:39.567 回答
1

好吧,我真的不推荐你先做什么让我们谈谈你的方法,这种代码应该包装在一个ready事件中,当DOM准备好时,与该事件相关的所有注册代码都会运行,所以无法理解代码在哪个脚本标签中


应该发生的事情是将所有脚本标签移动到它自己的文件中并使用选择器来选择您想要的元素或使用prev, next,parents等动态选择它们

编辑

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

于 2012-12-06T11:30:44.117 回答