2012-03-05 71 views
0

我如何使用jQuery从onclick属性得到的文本字符串,并将其设置为href属性。从属性获取值并将其添加为另一个属性?

这里是我的工作小提琴:http://jsfiddle.net/MBmt5/

我只想TrackPackage.asp?track=95213&ship=OTHER&ShippingMethod=3onclick属性采取和它支撑到href属性

因此,它最终会这样看:http://jsfiddle.net/52Nha/

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

更新

当然我首先:

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

+0

是有可能有onclick句柄是一个单独的功能?你从哪里得到TrackPackage.asp?...链接?它是一个动态的吗? – Ajai 2012-03-05 01:40:33

+0

这绝对是一个动态的,我不能修改主播标记... – henryaaron 2012-03-05 01:41:54

+1

伙计,认真......你仍然在与此挣扎?这是一个传统的应用程序,还是有活动的后端开发工作?如果有人仍然在为爱保持后端,那么他们就会改变链接世代!他们不应该以任何方式直接在onclick上书写。 – prodigitalson 2012-03-05 01:55:24

回答

0

丑,但我希望这会帮助你。

$('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');​​​​​​​​​​​​​​​ 
}); 
+0

这里假定页面中只有一个定位标记? – Ajai 2012-03-05 01:48:47

+0

这只是一个基于OP小提琴的示例代码。基于标记,代码可以根据需要重新使用。 – ShankarSangoli 2012-03-05 01:58:49

+0

jsfiddle没有工作。 – lowerkey 2012-03-05 02:06:01

0

这里有一种方法:

+0

任何方式让这与jQuery 1.4.2一起工作? – henryaaron 2012-03-05 02:28:37

+0

下面是一个适用于1.4.4的版本,应该与1.4.2一起工作:http://jsfiddle.net/MBmt5/4/ – 2012-03-05 02:43:28

0

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)​ 
+0

有什么方法可以使用jQuery 1.4.2? – henryaaron 2012-03-05 02:29:09

+0

应该与1.4.2兼容...不要使用任何新东西 – charlietfl 2012-03-05 02:34:40

+0

哇..在小提琴中测试,它有麻烦1.4 ...我很惊讶,尝试几件事 – charlietfl 2012-03-05 02:37:09

相关问题