jquery中的问题,同时使表行可单击,其中包含表数据中的链接

时间:2012-04-10 06:40:42

标签: javascript jquery

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

这的功能就像

  1. 点击行时,它会调用一个操作,其数据将显示在新窗口中。
  2. 当您点击表数据链接时,它将在新窗口中打开链接,而不会对行单击执行任何操作。
  3. 代码:

    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');
            });
        });
    });
    

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

1 个答案:

答案 0 :(得分:1)

你走错了路。

不要乱解解锁和重新绑定click事件,只需处理锚元素的事件,并检查处理函数本身已点击的内容并执行适当的操作。新代码将是:

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;
    });
});​

Live test case