JQuery - 文档中当前位置的“选择器”

时间:2009-09-15 16:10:01

标签: jquery

JQuery中是否有选择器或函数可以选择“文档中的当前位置”?

例如,如果我使用

<script>document.write("test");</script>

输出将放在HTML文档中“此代码”所在的“位置”。但是jQuery总是需要一个特殊的选择器。当然我可以使用带有唯一选择器的“marker div”,但是也可以在JQuery表达式所在的位置插入带有JQuery的HTML吗?

我试过

<script>$(this).after("test");</script>

但这不起作用。非常感谢帮助如何解决这个问题。谢谢!

编辑:

关于下面的问题:想法不是直接用document.writeln打印出来的东西(它更像是一个例子),而是用jQuery确定文档中的当前“位置”(而不是从通过使用jQuery功能对元素的“导航/遍历”进行定位。

也许这可以被称为“从DOM树中当前位置开始的元素的相对遍历”?

<div>Position1</div>
<div>Position2</div>
<script> HOW TO GET THIS POSITION WITH JQUERY (SEE NOTES BELOW) TO FURTHER NAVIGATE FROM HERE ON (RELATIVELY) TO THE PREVIOUS OR NEXT ELEMENT</script>
<div>Position3</div>
<div>Position4</div>

注意:带有jQuery语句的script标签将动态插入到文档中,我感兴趣的是能够使用jQuery从文档中的这个位置导航。在脚本标签中,我可能会称之为“通过JAGERY标记下一个HTML元素”或“给我下一个HTML元素值属性”。如上所述,可以插入“标记div”来确定位置,但问题是,如果JQuery“自主地”能够确定它在DOM树中的位置(从那里以“相对方式”开始导航)上)。

4 个答案:

答案 0 :(得分:3)

$(“script:last”)似乎适用于所有现代浏览器(IE除外)

<html>
<head>
  <title>test</title>
  <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.5.min.js"></script>
</head>
<body>
  <script type="text/javascript">
    document.write($("script:last").text());
  </script>
  <script type="text/javascript">
    document.write("---");
    document.write($("script:last").text());
  </script>
</body>

答案 1 :(得分:1)

如果我理解正确,你想要一个与document.write完全相同的功能,我不明白你为什么要这样,而不仅仅是使用document.write?

答案 2 :(得分:0)

这很简单:只需为内联脚本标记指定一个id属性:

  <script id="hello">alert("hello");</script>

那么你可以这样做:

$('script#hello').after('<span style="color:red">this is my new content</span>');

<强>更新

因为您不想修改html标记,所以唯一的选择是根据代码中的外观顺序访问脚本标记。

  $('script').each(function(index){
// "index" gives you the instance number, which you could use, for example inside a switch case.
switch(index){
case '1':
    $(this).after('<span style="color:red">i am number 1</span>');
break;

case '2':
    $(this).after('<span style="color:red">i am number 2</span>');
break;

default:
    $(this).after('<span style="color:red">i am number '+index+'</span>');
break;
}
    });

或者您可以通过.eq(index)访问特定的一个:

$('script').eq(2).after('hello world');  
// this is for the third script tag, starting from the top of the document.

答案 3 :(得分:0)

我不知道使用jQuery的解决方案,但你可以很容易地在大多数浏览器中找到当前插入位置的DOM节点:

    IE中的
  • document.selection.createRange()(参见MSDN)
  • window.getSelection()。大多数其他浏览器中的focusNode(Gecko等,见MDC Article
祝你好运!