这有点傻,因为它反对解放Javascript的标记,但不管怎样我都会问。
鉴于此片段:
<p>Hello</p>
<script type="text/javascript">
$(document).ready(function(){
$('relative-selector').next('p').hide();
});
</script>
<p>World</p>
此代码段会使用此“相对选择器”定位<script>
标记本身,而.next('p').hide()
会导致<p>World</p>
被隐藏。
是否存在“相对选择器”,或者是否存在指定代码段所在的脚本代码?
我正在寻找的答案(给出这样的存在)不需要使用id
属性或任何此类识别属性;无论DOM树中的位置如何,它都可以在给定文档中使用任意数量的<script>
标记。
我见过一些不使用$(document).ready()
的奇怪实现,而是依赖于剩余标记未加载的事实,使用$('script:last')
或某些此类混合。这不是我想要的;我想.bind()
一些处理程序相对于绑定脚本片段的元素(通常在之后,这就是为什么卸载的标记技巧不起作用)
$(this)
处理程序, document
只是针对ready
对象。负载延迟处理程序之外的$(this)
目标是window
。
我已经几乎已经接受了这可能是不可能的,但是我确定是否存在任何解决方案,它在SO用户的脑海中浮现。
答案 0 :(得分:7)
您可以使用
插入临时元素document.write("<div id='temp' style='display: none'></div>")
然后使用它来使用jQuery查找下一个元素。之后你可以删除元素。
$("#temp").next("p").doSomething();
$("#temp").remove();
另一种选择是建立你为部分加载的文档建议的技术,以检索对标记的引用,但仅在加载时使用它:
(function() {
var thisScript = $('script:last');
$(function() {
thisSctipt.next("p").doSomething();
});
})();
答案 1 :(得分:0)
我认为您不能为包含脚本标记创建相对选择器。
脚本标记有一个jQuery选择器:script[type*=javascript]
,您可以尝试将类或id属性添加到要隐藏的
元素,然后将jQuery选择器写入在脚本标记之后立即选择所有
元素,并检查每个
元素是否包含指示它们应隐藏的类。
自从我使用jQuery已经有一段时间了,所以你不得不原谅我,但我现在无法为你提供代码示例。