如何用一系列文本为onclick事件做准备

How can I prepend an onclick event with a string of text

本文关键字:事件 onclick 何用 一系列 文本      更新时间:2023-09-26

我有带有onclick事件的<a>

<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);

谢谢。

我认为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,你需要这样做,那么在onClick属性上使用replace(),比如:

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

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