Javascript 从中调用脚本标记的JQuery选择器

Javascript 从中调用脚本标记的JQuery选择器,javascript,jquery,dom,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

我正在开发的工具有以下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>

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

引用包含我所知道的脚本的script标记是无法做到这一点的。这里最好的方法是为每个元素生成一个ID,并将脚本聚合到单个脚本标记中

这是正确的解决方案。秘密、顽皮的解决方案是这个扰流器:


不要使用它

引用包含我所知道的脚本的脚本标记时,无法执行此操作。这里最好的方法是为每个元素生成一个ID,并将脚本聚合到单个脚本标记中

这是正确的解决方案。秘密、顽皮的解决方案是这个扰流器:


不要使用它

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

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

实际上,这里有一个很好的答案:


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

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

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

实际上,这里有一个很好的答案:


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

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

应该做的是将所有脚本标记移动到它自己的文件中,并使用选择器选择所需的元素,或者使用prev、next、parents等动态选择它们

编辑


我错了,不能得到脚本标签@Niklas answer是正确的,但我仍然认为这样做是非常错误的, 这类代码应该包装在就绪事件中,当DOM就绪时,与该事件关联的所有注册代码都将运行,因此无法理解代码所处的脚本标记

应该做的是将所有脚本标记移动到它自己的文件中,并使用选择器选择所需的元素,或者使用prev、next、parents等动态选择它们

编辑


我错误地认为无法获取脚本标记@Niklas answer是正确的,但我仍然认为这样做是非常错误的

请注意,警报“x已单击!”;这只是一个例子,回调语句因按钮而异。这似乎是一种非常糟糕的方式,为什么您需要它?为什么不给按钮ID并在选择器中使用它们?请查看此答案,因为它可能会帮助您:请注意警报“x单击!”;举个例子,回调语句因按钮而异。这似乎是一种非常糟糕的方式,为什么你需要它?为什么不给按钮ID并在选择器中使用它们?看看这个答案,因为它可能会对你有所帮助:这是可能的,但每次你使用这种方法,都会有一个孤儿死于悲伤。谢谢,是的,我按照你的建议做了$'script'。last.prev.click这是可能的,但每次你使用这种方法,都会有一个孤儿死于悲伤。谢谢你,没错,我按照你的建议做了$'script'。last.prev.click为什么不只是$'script.prev.click函数{…};​ 关于文档就绪函数回调?@因为有多个脚本,每个脚本都有不同的回调。为什么不只使用$'script'。prev.clickfunction{…};​ 关于document ready函数回调?@因为有多个脚本,每个脚本都有一个不同的回调。在一般情况下你是对的,但在我的情况下,每个脚本标记中的代码只访问上一个元素,这当然已经加载。在一般情况下你是对的,但在我的情况下,每个脚本标记中的代码只访问上一个元素,当然已经加载了该元素。
$('script').last().prev().click(...
<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>