内联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以来已经有一段时间了,所以你不得不原谅我,但我现在还不能为你提供代码示例。