Dan*_*ugg 9 jquery jquery-selectors
这有点傻,因为它反对解放Javascript的标记,但不管怎么说我都会问.
鉴于此片段:
<p>Hello</p>
<script type="text/javascript">
$(document).ready(function(){
$('relative-selector').next('p').hide();
});
</script>
<p>World</p>
Run Code Online (Sandbox Code Playgroud)
此片段将<script>使用此" 相对选择器 " 定位标记本身,.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>")
Run Code Online (Sandbox Code Playgroud)
然后使用它来使用jQuery查找下一个元素.之后您可以删除元素.
$("#temp").next("p").doSomething();
$("#temp").remove();
Run Code Online (Sandbox Code Playgroud)
另一个选择是建立你为partialy加载的文档建议的技术,以检索对标记的引用,但仅在加载时使用它:
(function() {
var thisScript = $('script:last');
$(function() {
thisSctipt.next("p").doSomething();
});
})();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4202 次 |
| 最近记录: |