我正在创建一个php / html应用程序,当用户点击行(<tr>
)jquery打开该记录时,会在表格中显示一些数据。
这是代码:
$.fn.linkRow = function(element) {
thisRow = this.find('tbody tr');
thisRow.on('click', function() {
hrefLocation = $(this).find('td.link:first a').attr('href');
if (hrefLocation) {
window.location.href = hrefLocation;
};
}).addClass((thisRow.has('td.link')) ? 'pointer' : '');
return this;
};
事实是:用户无法在新标签页中打开记录。唯一的方法是复制并粘贴href
...我的用户不会这样做。
如果对滚动按钮触发的事件进行一些研究以及如何打开新标签,那么后者几乎是不可能的,所以...有没有人可以想办法?
编辑:我的意思是鼠标滚轮...通常这会在新标签页中打开一个链接。
PS:我必须使用表格,在某些时候我会为此制作一个基于CSS的表格布局(不需要javascript),但我不能在这个版本的软件中这样做。
谢谢!
这是最终代码:
$.fn.linkRow = function(element) { thisRow = this.find('tbody tr'); thisRow.not('a').on('mouseup', function(e) { hrefLocation = $(this).find('td.link:first a:first').attr('href'); if ( hrefLocation ) { if (e.which == 2) { window.open(hrefLocation); } else{ window.location.href = hrefLocation; } }; }).addClass( ( thisRow.has('td.link') ) ? 'pointer' : '' ); return this; };
但是......鼠标滚轮点击不符合我的意图:
如果您点击链接(a
代码)&gt;打开一个新标签
如果您点击无链接(任何其他标记)&gt;它将根据您的鼠标位置滚动。 如果你向上移动鼠标,它会向上滚动,所以
所以...我的工作,但我明确需要制作一个no-javascript解决方案。
答案 0 :(得分:2)
如果您想要在新标签页中打开链接而不是在同一页面中,则需要替换
window.location.href = hrefLocation;
带
window.open(hrefLocation);
答案 1 :(得分:1)
使用 mouseup 更改单击,并使用值2(中间按钮)捕获e.with:
$.fn.linkRow = function(element) {
thisRow = this.find('tbody tr');
thisRow.on('mouseup', function(e) {
hrefLocation = $(this).find('td.link:first a').attr('href');
if ( hrefLocation ) {
if (e.which == 2) {
window.open(hrefLocation);
}
else{
window.location.href = hrefLocation;
}
};
}).addClass( ( thisRow.has('td.link') ) ? 'pointer' : '' );
return this;
};
答案 2 :(得分:0)
尝试使用以下方法
$(document).scroll(function(){
if(!tabOpen){
window.open('url', 'window name', 'window settings');
tabOpen = true;
}
});
答案 3 :(得分:0)
几个月前我遇到了类似的问题。
要么将每个td内容包装成普通的a
- 标签(并使用_target =“blank”),在这种情况下不需要javascript!
......或者你使用js:
thisRow.click(function(){
window.open('url', 'window name', 'window settings');
return false;
});
答案 4 :(得分:0)
要在新标签页中使用:
window.open(hrefLocation);
window.open(hrefLocation,'_blank'); //Or this
window.open(hrefLocation,'_newtab'); //Or this
其中一个应该有用。
答案 5 :(得分:0)
window.open()
可以解决问题,但也取决于浏览器配置
不确定滚动按钮的含义,但如果它是鼠标滚轮,那么您可以使用此脚本在启动/向下启动事件。
答案 6 :(得分:0)
我不确定您是否想知道如何使用jquery进行中间点击事件,或者如果您想知道如何打开新标签但是这里有:
中间点击事件:
$("tr").live('mousedown', function(e) {
if( (e.which == 2) ) {
alert("middle button");
}
e.preventDefault();
});
新标签:
正如所有其他人所说,请使用以下内容:
window.open(href);
中间点击和打开链接:
$("tr").live('mousedown', function(e) {
if( (e.which == 2) ) {
window.open(href);
}
e.preventDefault();
});
修改强> 一些来源: Jquery: detect if middle or right mouse button is clicked, if so, do this:
Detect middle button click (scroll button) with jQuery的答案也有助于解决与IE
的一些兼容性问题