【问题标题】:Get a value from an attribute and add it as another attribute?从属性中获取值并将其添加为另一个属性?
【发布时间】:2012-03-22 13:42:23
【问题描述】:

如何使用 jQuery 从onclick 属性中获取一串文本并将其设置为href 属性。

这是我正在使用的小提琴:http://jsfiddle.net/MBmt5/

我只想从onclick 属性中获取TrackPackage.asp?track=95213&ship=OTHER&ShippingMethod=3 并将其支撑到href 属性中

所以它最终看起来像这样:http://jsfiddle.net/52Nha/

不幸的是,我不知道如何做到这一点。有谁能够帮我?必须与 jQuery 1.4.2 兼容。谢谢。

更新

我当然会开始:

$(document).ready(function(){
$('span.trackpackagebutton').closest('a').removeAttr('href');
});

【问题讨论】:

  • 是否可以让 onclick 处理程序成为一个单独的函数?您从哪里获得 TrackPackage.asp?... 链接?是动态的吗?
  • 绝对是动态的,我不能修改锚标记...
  • 老兄,说真的……你还在为此苦苦挣扎吗?这是一个遗留应用程序,还是有活跃的后端开发人员在开发它?如果有人仍在为爱维护后端,那是神圣的,让他们更改链接生成!他们不应该以任何方式直接在 onclick 中写入。
  • @prodigitalson 我希望...

标签: javascript jquery onclick href attr


【解决方案1】:

很丑,但希望对你有帮助。

$('a').attr('href', 
            $('a')[0].getAttribute('onclick')
            .replace("window.open('", '').split(',')[0].replace("'", ''))
      .removeAttr('onclick');​​​​​​​​​​​​​​​

工作演示 - http://jsfiddle.net/MBmt5/5/

注意:根据您的标记结构,您可以使用正确的选择器并重用上述代码。

例如:下面的代码将为页面上所有具有onclick 属性和window.open 的锚点执行此逻辑。

$('a[onclick^="window.open"]').each(function(){
    $(this).attr('href', 
                this.getAttribute('onclick')
                .replace("window.open('", '').split(',')[0].replace("'", ''))
           .removeAttr('onclick');​​​​​​​​​​​​​​​
});

【讨论】:

  • 这里假设页面中只有一个锚标签?
  • 这只是一个基于 OP 小提琴的示例代码。根据标记,可以根据需要重用代码。
  • @lowerkey - 它确实有效,我在 Chrome 中进行了测试。你用的是哪个浏览器?
  • @lowerkey - 您能回复一下以便我改进我的答案吗?
  • @ShankarSangoli - 问题似乎是 1.4.2 不会检索属性
【解决方案2】:

http://jsfiddle.net/GaZGv/1

var $a = $('span.trackpackagebutton').closest('a');
var href = $a.attr('onclick').split('(')[1].split(',')[0].replace(/'/g, '');
$a.attr('href', href).removeAttr('onclick');

alert(href)​

【讨论】:

  • 应该与 1.4.2 兼容...不要在其中使用任何新内容
  • 哇..在小提琴中测试,它在 1.4 中遇到了麻烦......我很惊讶,尝试了一些东西
【解决方案3】:

这是一种方法:

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多