2013-12-18 53 views
1

在我的HTML的锚固装置具有onclick属性,像这样:拆分JavaScript网址的jQuery

<a href="javascript:void(0);" onclick="javascript:OpenNewWindow('/help_options.asp?ID=23', 350, 250);" class="help_question_mark">?</a> 

我试图剥去JavaScript的处理程序,以获得原始网址,并将其托到href属性,这样的结果是这样的:

<a href="/help_options.asp?ID=23" class="help_question_mark">?</a> 

我想这会是简单的,只写是这样的:

$('a.help_question_mark').each(function(){ 
    help_question_mark_link = $(this).attr('onclick').split('javascript:OpenNewWindow(\'').join('').split('\', 350, 250);').join(''); 
    $(this).removeAttr('onclick'); 
    $(this).attr('href',help_question_mark_link); 
}); 

在jQuery 1.1.1中,这似乎工作,但不适用于我仅限于使用的1.4.2。

任何人都可以对此有所了解,我在泡菜。

这是jsFiddle

+1

也许这将有助于解释发生了什么:http://jsfiddle.net/wa5N5/1/基本调试。 –

+0

它究竟是不是工作?有没有错误,或者它只是无所作为? –

+0

@KevinB不知道这有什么帮助。甚至更基本的调试是jsHint错误'脚本URL',我不知道如何解决。 – henryaaron

回答

2

好的。所以经过大量的调整之后,我发现jQuery 1.4.2在调用$(...).attr('onclick')时返回一个特殊的onclick对象,而不仅仅是一个字符串。

因此,我们需要打破远离jQuery的使用:

this.getAttribute('onclick') 

,而不是这样的:

$(this).attr('onclick') 

有点怪诞。 看到这个JSFiddle

P.S.我发现console.log$(...).attr('onclick')返回的值。

+0

这可能是由于jquery检索属性而不是属性.attr()在旧版本中。 –

+0

这很有趣,没有太多的console.log,这对我来说都很正常。多谢 – henryaaron