1

我正在制作一个 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 = 函数(元素){
    thisRow = this.find('tbody tr');

    thisRow.not('a').on('mouseup', function(e) {
        hrefLocation = $(this).find('td.link:first a:first').attr('href');
        如果(hrefLocation){
           如果(e.which == 2){
              window.open(hrefLocation);
           }
           别的{
              window.location.href = hrefLocation;
           }
        };
    }).addClass( ( thisRow.has('td.link') ) ? 'pointer' : '' );
    返回这个;
};

但是...鼠标滚轮点击不适用于我的意图:

如果您单击链接(a标签)> 打开一个新选项卡

如果您单击无链接(任何其他标签)> 它将根据您的鼠标位置滚动。如果您向上移动鼠标,它会向上滚动,因此

所以......我工作,但我绝对需要制作一个无 JavaScript 的解决方案。

4

7 回答 7

2

如果要在新选项卡中打开链接而不是在同一页面中,则需要替换

window.location.href = hrefLocation;

window.open(hrefLocation);
于 2013-04-03T13:15:13.503 回答
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;
};
于 2013-04-03T13:24:37.563 回答
0

试试下面的方法

$(document).scroll(function(){
if(!tabOpen){
    window.open('url', 'window name', 'window settings');
    tabOpen = true;
}
});
于 2013-04-03T13:16:17.853 回答
0

几个月前我遇到了类似的问题。

要么将每个 td-content 包装成一个普通的a-Tag(并使用 _target="blank"),在这种情况下不需要 javascript!

...或者你使用 js:

thisRow.click(function(){
  window.open('url', 'window name', 'window settings');
  return false;
});
于 2013-04-03T13:17:32.407 回答
0

要在新选项卡中打开,请使用:

window.open(hrefLocation);
window.open(hrefLocation,'_blank'); //Or this
window.open(hrefLocation,'_newtab'); //Or this

其中之一应该工作。

于 2013-04-03T13:20:27.447 回答
0

window.open()可以解决问题,但它也取决于浏览器配置

不确定滚动按钮是什么意思,但如果是鼠标滚轮,那么您可以使用此脚本在滚轮向上/向下触发事件。

http://brandonaaron.net/code/mousewheel/demos

于 2013-04-03T13:23:28.410 回答
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 middle button click (scroll button) with jQuery的回答也可以帮助解决一些与IE的兼容性问题

于 2013-04-03T13:24:54.263 回答