如何通过滚动按钮打开新的选项卡触发器

时间:2013-04-03 13:10:59

标签: javascript jquery html

我正在创建一个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解决方案。

7 个答案:

答案 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()可以解决问题,但也取决于浏览器配置

不确定滚动按钮的含义,但如果它是鼠标滚轮,那么您可以使用此脚本在启动/向下启动事件。

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

答案 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

的一些兼容性问题