带有儿童链接的可点击DIV

时间:2012-02-28 09:54:50

标签: javascript jquery

我创建了一个可点击的div元素,其中包含一些链接。当我点击div上的任意位置时,页面将转到邮件链接,但我希望能够转到div内的所有其他链接。我设法通过调用e.stopPropagation();方法来完成此操作。这非常好。你可以在这里看到它: http://jsfiddle.net/nfZ3y/1/

问题是,当按住ctrl键并单击链接(在新选项卡上打开它)时,链接将不起作用,页面将转到默认链接(而不是我刚刚点击了)。如何实现子链接的所有功能并为我的div添加默认链接?

1 个答案:

答案 0 :(得分:1)

正如人们所指出的,似乎stopPropagation在Firefox中与其他浏览器的工作方式不同。我唯一的建议是自己处理点击:

$('.first').click(function (e) {
    var title = $(this).children('.main-link');
    var href = title.attr('href');
    if ( e.ctrlKey )
        window.open(href,"_blank");
    else
        window.location = href;
    return false;
});

$('.first a').click(function (e) {
    var title = $(this);
    var href = title.attr('href');
    if ( e.ctrlKey )
        window.open(href,"_blank");
    else
        window.location = href;
    return false;
});​

Working example关于jsFiddle。

更新以减少冗余,将第一个处理程序替换为:

$('.first').click(function (e) {
    $(this).children('.main-link').click();
    return false;
});