【问题标题】:Take href value, store in variable and remove the http://取 href 值,存储在变量中并删除 http://
【发布时间】:2012-10-21 08:40:20
【问题描述】:

我整个下午都在试穿试穿,但没有成功。我需要做的是获取链接的href="" 值并将其存储在新变量或新属性中(在a 内),但事先删除了http://。这将使href 值保持不变,以便它仍然指向链接,但我也有一个没有 http:// 的版本。

到目前为止,这是我尝试过的代码:

$("a[href]").each(function() {
    var link = $(this).replace('http://', '');
});

我认为这是正确的,但我不太擅长 jQuery 或 JS,所以如果有人能完成它/从头开始,我将不胜感激 :)

最终,我希望能够使用a:before 将不带http:// 的链接放入a 的伪元素中。

我也有一个jsfiddle

非常感谢任何帮助我的人。

【问题讨论】:

  • 使用this.href 而不是$(this)
  • 无法使用 javascript/jQuery 定位伪选择器。将无法执行 a:before 和添加内容。
  • @Ohgodwhy 我们不能只在链接上设置一个新属性并在 a:before 中使用它,使用 content: attr(new);在 CSS 中?

标签: jquery string variables href


【解决方案1】:

a[href] 不选择 href 属性,它选择具有此属性的元素,因此您必须调用属性手册:

$("a[href]").each(function() {
        var link = $(this).attr('href').replace('http://', '');
    });

【讨论】:

    【解决方案2】:

    只需使用this.href 而不是$(this)

    如果你想处理httpshttp,你可以使用正则表达式:

    var link = this.href.replace(/^https?:\/\//, '');
    

    此外,由于您想在 :after 伪元素中显示此值,请将 link 存储在数据属性中。这样,您可以直接从 CSS 中获取值:

    $("a[href]").each(function() {
        var link = this.href.replace(/^https?:\/\//, '');
    
        $(this).attr('data-href', link);
    });
    

    然后将您的 CSS 更改为:

    a:before {
        content: 'This link goes to ' attr(data-href);
    

    演示:http://jsfiddle.net/dSHH4/1/

    【讨论】:

      【解决方案3】:

      简单我会这样做:

      <script type="text/javascript">
          $(function() {
              var withhref = $("a").attr("href"); alert(withhref);
              var withouthref = $("a").attr("href").replace("http://","");  alert(withouthref);
      
          })
          </script>
      

      DEMO

      【讨论】:

        猜你喜欢
        • 2023-03-15
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 1970-01-01
        • 2013-11-04
        • 2013-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多