如何使用一串文本添加onclick事件

时间:2012-02-14 00:15:13

标签: javascript jquery onclick anchor prepend

我有<a>次onclick事件:

<a href="#" onclick="window.open('TrackPackage.asp', '', 'location=1,menubar=1,scrollbars=1,status=1,resizable=1,width=635,height=460'); return false;" class="nounderline">Track Your Package »</a>

如何使用http://www.example.com添加这些onclick事件,以便结果为:

<a href="#" onclick="window.open('http://www.example.com/TrackPackage.asp', '', 'location=1,menubar=1,scrollbars=1,status=1,resizable=1,width=635,height=460'); return false;" class="nounderline">Track Your Package »</a>

它必须与jQuery 1.4.2兼容

其他人,曾经提到过类似的东西,但是我无法在1.4.2中使用它:

var link = $("a"); // I don't have enough info to tell you how to precisely get this instance
var originalOnClick = link.attr("onclick");
var part1 = "window.open('"; // this is always the same, right?
var part2 = originalOnClick.substr(part1.length); // the remainder, beginning with TrackPackage.asp
var newOnClick = part1 + "http://www.example.com/" + part2;

link.attr("onclick", newOnClick);

感谢。

1 个答案:

答案 0 :(得分:1)

我认为window.open()在这里不是一个好主意。它会被大多数弹出窗口阻止程序阻止,如果你使用jQuery,你不应该使用内联onclick事件。
您可以通过简单的锚链接来实现您想要做的事情:

<a href="trackPackage.asp" target="_blank"></a>

然后你可以这样做:

var prependUrl = function($link, url) {
    var oldUrl = $link.attr('href'),
        newUrl = url + oldUrl;
    $link.attr('href', newUrl);
}

prependUrl($('#yourLink'), 'http://www.example.com/');

修改

如果您无法控制html而需要这样做,请在replace()属性上使用onClick,如:

$('a').attr('onClick', $('a').attr('onClick').replace('window.open(\'', 'window.open(\'http://example.com/'));

示例: http://jsfiddle.net/elclanrs/AH4As/