【问题标题】:Setting href attribute at runtime在运行时设置 href 属性
【发布时间】:2011-05-19 17:28:06
【问题描述】:

在运行时使用 jQuery 设置<a> 标记的href 属性的最佳方法是什么?

另外,如何使用jQuery获取<a>标签的href属性的值?

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    要获取或设置 HTML 元素的属性,可以使用 jQuery 中的element.attr() 函数。

    要获取 href 属性,请使用以下代码:

    var a_href = $('selector').attr('href');
    

    要设置 href 属性,请使用以下代码:

    $('selector').attr('href','http://example.com');
    

    在这两种情况下,请使用适当的选择器。如果你设置了锚元素的类,使用'.class-name',如果你设置了锚元素的id,使用'#element-id'

    【讨论】:

    • 我用它来获取href。 alert($("#publish-link").attr("href"));它给了我“未定义”的警报。
    • 这可能意味着您的发布链接是一个类而不是一个 id。尝试:警报($(“.publish-link”).attr(“href”));而是
    • @lakum4stackof:如果您在此处发布您正在使用的确切 标签会有所帮助:)
    • 啊抱歉。你说的对。我已经应用了类,并且在 jquery 代码中使用了“#”。它与 alert($(".publish-link").attr("href"));非常感谢。 :)
    【解决方案2】:

    设置href属性
    $(selector).attr('href', 'url_goes_here');
    

    并使用阅读它

    $(selector).attr('href');
    

    其中“选择器”是您的 <a> 元素的任何有效 jQuery 选择器(最简单的选择是“.myClass”或“#myId”)。

    希望这会有所帮助!

    【讨论】:

    • 我用这个来获取href。 alert($("#publish-link").attr("href"));它给了我“未定义”的警报。
    • @lakum4stackof 您很可能在设置 href 属性之前执行了该警报代码,假设您的选择器是正确的。
    • 尝试:alert($(".publish-link").attr("href"));因为您的元素可能是一个类而不是一个 id。实际上,如果 $(this) 在您的活动中,可能会使用它
    【解决方案3】:

    在 jQuery 1.6+ 中最好使用:

    $(selector).prop('href',"http://www...")设置值,并且

    $(selector).prop('href')获取价值

    简而言之,.propDOM 对象上获取和设置值,.attrHTML 中获取和设置值。这使得.prop 在某些情况下更快一些并且可能更可靠。

    【讨论】:

    • 同意 '.prop' 将获得完整路径,如:http : //www.../index.html 而 .attr 将仅获得:'index.html'
    【解决方案4】:
    <style>
    a:hover {
        cursor:pointer;
    }
    </style>
    
    <script type="text/javascript" src="lib/jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
        $(".link").click(function(){
            var href = $(this).attr("href").split("#");
            $(".results").text(href[1]);
        })
    })
    </script>
    
    
    
    <a class="link" href="#one">one</a><br />
    <a class="link" href="#two">two</a><br />
    <a class="link" href="#three">three</a><br />
    <a class="link" href="#four">four</a><br />
    <a class="link" href="#five">five</a>
    
    
    <br /><br />
    <div class="results"></div>
    

    【讨论】:

    • 纯代码答案不如具有工作代码和有用解释的答案有用。在这种情况下,值得向 5 岁的孩子解释这个答案。
    【解决方案5】:

    三种解决方案的小型性能测试比较:

    1. $(".link").prop('href',"https://example.com")
    2. $(".link").attr('href',"https://example.com")
    3. document.querySelector(".link").href="https://example.com";

    这里可以自行测试https://jsperf.com/a-href-js-change


    我们可以通过以下方式读取href值

    1. let href = $(selector).prop('href');
    2. let href = $(selector).attr('href');
    3. let href = document.querySelector(".link").href;

    这里可以自行测试https://jsperf.com/a-href-js-read

    【讨论】:

    • 不错!奇怪的是,我得到的结果与你相反,但能够自己运行它们很有趣。
    • @HoldOffHunger 是的 - 非常有趣 - 你的机器、操作系统和浏览器是什么?
    • FF59,Win10。结果似乎再次略有变化(可能取决于打开的标签数量),但仍然基本相同:imgur.com/a/MLDnTWM 机器:10 年的英特尔板(dp55wg),3.1ghz 四核,16gb ddr3 ram, gtx1070.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2011-01-02
    • 2011-04-17
    • 2016-09-12
    相关资源
    最近更新 更多