1

我有一个包含作为表格数据的链接的表格,我想让表格行可点击。为此,我使用以下 jQuery。

这个的功能就像

  1. 单击行时,它会调用一个操作,并且该操作的数据将显示在新窗口中。
  2. 当您单击表数据链接时,它将在新窗口中打开链接,并且对行单击没有任何操作。

代码:

jQuery( function($) {
    $('tbody tr[data-href]').addClass('clickable').click( function() {
        window.open($(this).attr('data-href'),'mywin','left=20,top=20,width=1240,height=500,toolbar=1,resizable=0');
    }).find('a').hover( function() {
        $(this).parents('tr').unbind('click');
    }, function() {
        $(this).parents('tr').click( function() {
            window.location = $(this).attr('data-href');
        });
    });
});

现在的问题是,当我第一次单击表格数据链接,然后单击表格行时,它没有在新窗口中打开,而是当前页面重定向到预期在新窗口中打开的页面。

4

1 回答 1

1

你走错路了。

而不是搞乱取消绑定和重新绑定单击事件,只需处理锚元素的事件并检查处理函数本身已单击的内容并执行正确的操作。新代码将是:

jQuery( function($) {
    $('tbody tr[data-href]').addClass('clickable');
    $('tbody').on('click', 'tr[data-href],a', function(evt) {
        if (this.nodeName.toLowerCase() === "a") {
            document.location = this.href;
        }
        else {
            window.open($(this).attr('data-href'),'mywin','left=20,top=20,width=1240,height=500,toolbar=1,resizable=0');
        }
        evt.stopPropagation();
        return false;
    });
});​

现场测试用例

于 2012-04-10T07:42:52.490 回答