内联jQuery; 选择相对于脚本标记

这有点傻,因为它反对解放Javascript的标记,但不管怎么说我会问。

鉴于此片段:

Hello

$(document).ready(function(){ $('relative-selector').next('p').hide(); });

World

此片段将使用此“ 相对选择器 ”将标记本身作为目标,而.next('p').hide()将导致.next('p').hide()

World

是否存在“ 相对选择器 ”,或者指定给定代码段所在的脚本标记的方法?

我正在寻找的答案( 如果存在这样的答案)将不需要使用id属性或任何此类识别属性; 无论DOM树中的位置如何,它都可以在给定文档中使用任意数量的标记。

我已经看到一些奇怪的实现不使用$(document).ready() ,而是依赖于剩余的标记没有加载的事实,使用$('script:last')或一些这样的混合。 这不是我所追求的; 我想.bind()一些处理程序相对于绑定脚本片段的元素( 通常在之后,这就是为什么卸载的标记技巧不起作用

由于ready处理程序, $(this)只是针对document对象。 $(this)在load-deferred处理程序目标window

我已经几乎已经接受了这可能是不可能的,但是我确定是否存在任何解决方案,它在SO用户的脑海中漂浮。

您可以使用插入临时元素

 document.write("") 

然后使用它来使用jQuery查找下一个元素。 之后您可以删除元素。

 $("#temp").next("p").doSomething(); $("#temp").remove(); 

另一个选择是建立你为partialy加载的文档建议的技术,以检索对标记的引用,但仅在加载时使用它:

 (function() { var thisScript = $('script:last'); $(function() { thisSctipt.next("p").doSomething(); }); })(); 

我不认为你可以为包含脚本标签创建一个相对选择器。

脚本标签有一个jQuery选择器: script[type*=javascript] ,你可以尝试添加一个class或id属性给

要隐藏的元素,然后编写jQuery选择器以选择所有元素

脚本标记后面的元素,并检查每个元素

元素,如果它们包含表明它们应该被隐藏的类。

自从我使用jQuery以来已经有一段时间了,所以你不得不原谅我,但我现在还不能为你提供代码示例。