0

我正在尝试为 click 函数添加一个处理程序以重定向到某个链接。我有一个父 div,它有一个点击处理程序来重定向到 google.com,在父 div 内,我有一个带有指向 yahoo.com 的锚标记的 subdiv。如果我单击包含指向 yahoo.com 的链接的子 div,它当前会转到 google.com。我该如何克服这个问题?

我创建了一个JSFIDDLE。这是HTML代码:

<div class="maindiv">
    <div class="subdiv">
        <a href="http://yahoo.com">Click Me</a>
    </div>
</div>

和Javascript代码:

jQuery('.maindiv').click(function() {
    window.open('http://google.com');    
});

我希望单击父 div 应该将用户带到google.com但父 div 内的任何链接都应该将用户带到适当的链接。

谢谢!

4

6 回答 6

4

这是更新的代码:http: //jsfiddle.net/c2XJf/23/

具体来说,您需要停止在锚标记上传播点击事件,如下所示:

$('.subdiv a').click(function(event){
    event.stopPropagation();
});

如果您想在新选项卡/窗口中打开锚标记的链接,请向您的 HTML 添加一个目标属性,如下所示:

<a href="http://yahoo.com" target="_new">Click Me</a>
于 2013-11-15T07:59:39.613 回答
2

jQuery代码:

$('.subdiv a').click(function(event){
    event.stopPropagation();
    window.open('http://yahoo.com');
});
$('.subdiv').click(function(event){
    window.open('http://yahoo.com');
});
$('.maindiv').click(function(event){
    window.open('http://google.com');
});

您可以为细分设置宽度样式以完美显示重定向。

更新的代码是:http: //jsfiddle.net/c2XJf/22/

于 2013-11-15T08:48:29.733 回答
1

检查目标 div 是否是当前 div..

试试这个

jQuery('.maindiv').click(function(e) {
 if(e.target == this){
     window.open('http://google.com');
 }
});
于 2013-11-15T08:01:47.343 回答
1
$('a').click(function(){window.open('http://yahoo.com');});
于 2013-11-15T08:02:21.887 回答
1

您只需检查被点击元素的tagName并重定向到相应页面即可解决此问题。

jQuery('.maindiv').click(function(event) {
    var target = $(event.target);
    //checks if a tag has been clicked or not
    if(!target.is('a')){
        window.open('http://google.com');
    }
    else{
        window.open("http://yahoo.com");
    }
});

演示

于 2013-11-15T08:14:18.140 回答
1

html代码:

<div class="maindiv">
    <div class="subdiv">
        <a href="#">Click Me</a>
    </div>
</div>

jQuery代码:

jQuery('.maindiv').click(function() {
    window.open('http://google.com');    
});
jQuery('.maindiv').find('a').click(function() {
    window.open('http://yahoo.com');    
});
于 2013-11-15T08:19:48.097 回答