在窗口中预先设置URL.打开函数jQuery
Prefixing a URL in an window.open function jQuery
我有这个HTML:
<a href="#" onclick="window.open('TrackPackage.asp?ID=4', '', 'settings');">Track Your Package »</a>
这个网站上的某个人能够为我提供一个脚本,在URL前面加上域http://www.example.com/
。下面是脚本:
$(document).ready(function(){
$('a[onclick^="window.open(''TrackPackage.asp"]').attr('onClick', $('a[onclick^="window.open(''TrackPackage.asp"]').attr('onClick').replace("window.open('", "window.open('http://www.example.com/"));
});
但是,我遇到了一个小麻烦:
第一个问题是元素有多个实例的情况。这是一把小提琴:http://jsfiddle.net/VMmZx/
一个锚不是按预期用ID=4
签名,另一个用ID=5
签名,而是用ID=4
签名
其想法是,每个window.open
函数都应该以http://www.example.com
为前缀,然而,URL的其余部分应该保持不变
我遇到的第二个问题是,当元素不在页面上时,jQuery的其余部分将失败
这是另一把小提琴:http://jsfiddle.net/VPf32/<a>
应该得到类foo
,但由于页面上不存在该元素,因此jQuery不会执行
由于JavaScript包含在ASP.NET服务器的HTML模板中,这可能会产生许多问题
我希望我已经说清楚了,你可以帮我。谢谢
您可以使用.each()
迭代每个匹配元素并分别更改它们:
$('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
和打开窗口的onclick
的链接是语义上的
<a href="TrackPackage.asp?ID=4" target="_blank">Track Your Package »</a>
现在,如果有人好奇它会把他们带到哪里,当你悬停在浏览器上时,它可以在状态栏中显示一些有用的东西
如果需要进一步调整行为,请为click
事件添加一个类和绑定。当他们点击时,阻止默认操作,并像以前一样自己打开窗口。
为什么要这样内联点击?我只会输出这样的链接:
<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'));
});
相关文章:
- 执行ajax成功函数-jQUERY
- 函数jquery.html()不提供数据属性集值
- 将变量放入ajax函数JQuery
- 函数jquery的未定义返回
- 如何在嵌套函数jquery上保持变量的值不变
- 用我的函数jquery给出数据/参数
- Firefox在调用函数(jquery)时冻结
- 在传递节时触发一个函数 - jquery
- 循环执行数组函数jQuery
- 在函数中调用另一个函数JQuery
- 对象不是函数-Jquery/JavaScript
- TypeError:对象不是函数-jquery
- 获取函数jQuery设置的属性
- 从函数jquery获取更新的变量值
- 切换而不是悬停函数jQuery
- 函数jQuery.animation()运行了两次行,但不起作用
- 使用函数 jQuery 获取变量
- 自执行函数 jquery 与 JavaScript 的区别
- 从回调函数 -JQuery 获取返回值
- 一个接一个地执行函数 JQUERY