这有点愚蠢,因为它与解放 Javascript 标记违反直觉,但无论如何我还是要问。
鉴于这个片段:
<p>Hello</p>
<script type="text/javascript">
$(document).ready(function(){
$('relative-selector').next('p').hide();
});
</script>
<p>World</p>
该片段将针对<script>
用这个标记自己“相对选择器", and .next('p').hide()
会导致<p>World</p>
被隐藏。
是否存在“相对选择器”,或者定位给定片段所在的脚本标签的方法?
我正在寻找的答案(鉴于存在这样一个)不需要使用id
属性,或任何此类识别属性;它可以与任意数量的<script>
给定文档中的标签,无论 DOM 树中的位置如何。
我见过一些奇怪的实现,但不使用$(document).ready()
,而不是依赖于剩余标记尚未加载的事实,使用$('script:last')
或一些这样的混合物。但这不是我所追求的;我想.bind()
与绑定脚本片段相关的元素的一些处理程序(通常是在之后,这就是为什么卸载标记技巧不起作用的原因)
$(this)
只是针对document
对象由于ready
处理程序。$(this)
在加载延迟处理程序目标之外window
.
我已经几乎接受了这可能是不可能的,但是我确信是否存在任何解决方案,它会浮现在其他 SO 用户的脑海中。
您也许可以使用插入临时元素
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();
});
})();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)