【问题标题】:JQuery - Get Value Using a SelectorJQuery - 使用选择器获取值
【发布时间】:2010-09-29 23:09:13
【问题描述】:

我试图在页面完全加载后选择页面上的第一个链接,并将页面重定向到第一页上的链接。

我了解如何使用选择器,但对于如何在页面加载后获取第一个项目感到困惑。我假设一旦我有了可以使用的价值

window.location = "http://www.google.com/"

一旦我获得了动态链接的值,就可以将用户带到正确的页面。

【问题讨论】:

  • 你有没有成功解决过这个问题?您还需要这方面的帮助吗?

标签: jquery html dom


【解决方案1】:
jQuery(document).ready(function() {
   window.location = jQuery("a[href]:first").attr("href");
});

带有:first 伪类的选择器选择第一个匹配的元素。有关选择器的更多信息,请查看jQuery's excellent documentation

编辑

实际上运行我的代码并注意到它返回一个空字符串。这是因为它正在拾取第一个 a 标记,而 没有 具有 href 属性。我已将选择器更改为仅选择具有href 属性的a 标记。

【讨论】:

  • 不知道在这种情况下使用链式方法.attr('href')会不会更好,只是因为他正在学习jQuery。我意识到 href 属性将存在,​​因为它是一个链接,但如果 attr 存在,他也可以在另一个元素上使用相同的概念。 (主要是针对@Ryan 的评论,而不是@Vivn Paliath,而是对评论的好评论)
  • @drachenstern - 我认为你在编辑过程中发现了我 - 我将其更改为 attr("href"),原因与你提供的完全相同:)
  • 如果有一个看起来像 的元素,则不会工作
【解决方案2】:

对于您的选择器,请使用 a:first。这将为您提供页面上的第一个锚标记。然后,您可以将位置设置为锚标记的 href 属性。

类似:

location = $("a:first").attr("href");

【讨论】:

    【解决方案3】:

    我会指出重定向很容易被击败。不要依赖它来获得任何“安全”。

    你可能还会发现你需要第一个真正有href的锚:

    $("a[href]:first").attr("href");
    

    【讨论】:

    • 没有必要指定第 0 个元素,事实上,如果您的包装集不包含任何元素,这可能会导致问题?我会将其重写为 $("a[href]:first").attr("href");
    【解决方案4】:

    您是否偶然在页面的脚本标签中使用了这种语法?

    $(document).ready(function(){
       // Your code here
     });
    

    【讨论】:

      【解决方案5】:
      $(document).ready(function(){
        $('a').each(function(){
          if($(this).attr('href').indexOf('http')==0) {
            window.location = $(this).attr('href');
          }
        });
      });
      

      此代码将起作用,因为: 它确保页面不会采用静态锚标记 () 并将其误认为是链接。如果它以 http: 开头,它将仅使用该链接,如果不是,它将转到标签的下一个出现。

      【讨论】:

      • 呵呵..我也有错误的括号。更新!您在下面关于文档准备功能的附录是完美的。不要忘记...
      • 仅供参考,上述选择“a[href]”的方法不起作用,因为某些链接出于某种原因在其中包含“#”。
      猜你喜欢
      • 2011-11-05
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多