Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在窗口中为URL添加前缀。打开函数jQuery_Javascript_Jquery_Execution_Prefix_Multiple Instances - Fatal编程技术网

Javascript 在窗口中为URL添加前缀。打开函数jQuery

Javascript 在窗口中为URL添加前缀。打开函数jQuery,javascript,jquery,execution,prefix,multiple-instances,Javascript,Jquery,Execution,Prefix,Multiple Instances,我有这个HTML: <a href="#" onclick="window.open('TrackPackage.asp?ID=4', '', 'settings');">Track Your Package »</a> 但是,我在这方面遇到了一些问题: 第一个问题是元素的多个实例。这是一把小提琴: 一个锚点不是按预期用ID=4签名,另一个锚点用ID=5签名,而是用ID=4签名 其思想是,每个窗口.open函数的前缀应为http://www.example.com但是,

我有这个HTML:

<a href="#" onclick="window.open('TrackPackage.asp?ID=4', '', 'settings');">Track Your Package »</a>
但是,我在这方面遇到了一些问题:
第一个问题是元素的多个实例。这是一把小提琴:
一个锚点不是按预期用
ID=4
签名,另一个锚点用
ID=5
签名,而是用
ID=4
签名
其思想是,每个
窗口.open
函数的前缀应为
http://www.example.com
但是,URL的其余部分应保持不变

我遇到的第二个问题是,当页面上不存在该元素时,jQuery的其余部分将失败
还有一把小提琴:
应该获得类
foo
,但是由于该元素在页面上不存在,jQuery不会执行。
由于JavaScript包含在ASP.NET服务器的HTML模板中,因此可能会产生许多问题

我希望我已经说清楚了,你能帮助我谢谢。

您可以使用迭代每个匹配元素并分别更改它们:

$('a[onclick^="window.open(\'TrackPackage.asp"]').each(function(index, element) {
    element = $(element);
    element.attr('onclick', element.attr('onclick').replace(/open\('/, 'open(\'http://www.example.com/'));
});​
但是,我不认为使用带有
href
of
#
onclick
打开窗口的链接具有尽可能多的语义。如果可能,请尝试将标记更改为:

<a href="TrackPackage.asp?ID=4" target="_blank">Track Your Package »</a>

现在,如果有人想知道它会把他们带到哪里,当你将鼠标悬停在状态栏上时,浏览器可以在状态栏中显示一些有用的东西


如果需要进一步调整行为,请为
单击
事件添加类和绑定。当他们单击时,阻止默认操作并像以前一样自己打开窗口。

为什么要这样做?我只想输出如下链接:

<a href="/path/to/file.html" target="_blank">Link Text</a>

不幸的是,HTML不在我的控制之下。我听过很多次同样的事情,很久以前我也会这么做的……啊,只在前端拥有权限的烦恼。是的。。。真让我难受。也许有一天,我将能够编写自己的软件;)这实际上给我带来了其他问题。。。它不能计算未定义的函数。最初的jQuery可以工作。。。我需要另一个脚本。很遗憾,HTML不在我的控制之下。我听过很多次同样的事情,很久以前我也会这么做。。。
<a href="/path/to/file.html" target="_blank">Link Text</a>
$('a[target=_blank]').click(function(){
   var prefix = 'http://domain.com';
   window.open(prefix + $(this).attr('href'));
});