在网页开发场景中,经常需要让页面内的多个特定链接点击后都自动在新标签页中打开,逐个给链接添加target="_blank"属性不仅繁琐,后期维护也不方便。使用jQuery可以快速批量选中目标链接,统一绑定点击事件来实现这个功能,大幅提升开发效率。

实现思路分析
要实现批量给多个链接添加新标签页打开的效果,核心分为三个步骤:
- 使用jQuery选择器选中所有需要处理的链接元素,可以通过类名、属性或者层级关系来筛选
- 给选中的链接绑定click点击事件,在事件回调函数中阻止链接的默认跳转行为
- 在回调函数中调用window.open方法,传入链接的href地址,实现新标签页打开
基础实现代码
假设页面上有多个带有类名new-tab-link的链接,我们需要让这些链接点击后都在新标签页打开,基础代码如下:
$(document).ready(function() {
// 选中所有带有new-tab-link类的a标签
$('.new-tab-link').on('click', function(e) {
// 阻止链接的默认跳转行为
e.preventDefault();
// 获取当前点击链接的href地址
var linkUrl = $(this).attr('href');
// 在新标签页打开链接
window.open(linkUrl);
});
});
按链接属性筛选的实现
如果不需要给链接添加额外类名,也可以通过链接的href属性特征来筛选,比如让所有指向外部域名的链接都新标签页打开:
$(document).ready(function() {
// 选中所有href以http开头的a标签,即外部链接
$('a[href^="http"]').on('click', function(e) {
e.preventDefault();
var externalUrl = $(this).attr('href');
window.open(externalUrl);
});
});
注意事项说明
浏览器拦截问题
部分浏览器会拦截非用户主动触发的window.open调用,不过通过点击事件回调中调用window.open属于用户主动操作,一般不会被拦截。如果还是出现拦截情况,可以检查是否在异步请求完成后再调用window.open,这类场景容易被浏览器判定为自动弹出。
特殊链接处理
如果链接的href是锚点(比如#section1)或者javascript伪协议,需要在筛选时排除,避免打开无效页面。可以在选择器里增加过滤条件:
$(document).ready(function() {
// 排除href为#开头或者javascript开头的链接
$('a.new-tab-link').not('a[href^="#"], a[href^="javascript"]').on('click', function(e) {
e.preventDefault();
var url = $(this).attr('href');
window.open(url);
});
});
兼容性说明
jQuery的事件绑定和window.open方法在主流现代浏览器中都有良好支持,如果需要兼容非常旧的浏览器,只需要确保引入的jQuery版本支持对应的浏览器即可,核心逻辑不需要额外修改。