单击jQuery中的Function Conflict

时间:2013-11-15 07:51:22

标签: javascript jquery html css

我正在尝试为click函数添加一个处理程序以重定向到某个链接。我有一个父div,它有一个点击处理程序重定向到google.com,在父div中,我有一个带有指向yahoo.com的锚标记的子块。如果我点击包含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中的任何链接都应该将用户带到相应的链接。

谢谢!

6 个答案:

答案 0 :(得分:4)

以下是更新后的代码:http://jsfiddle.net/c2XJf/23/

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

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

如果您想在新标签/窗口中打开锚标记的链接,请将HTML目标属性添加到您的HTML中:

<a href="http://yahoo.com" target="_new">Click Me</a>

答案 1 :(得分: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');
});

并且您可以为subdiv设置宽度样式以完美显示重定向。

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

答案 2 :(得分:1)

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

试试这个

jQuery('.maindiv').click(function(e) {
 if(e.target == this){
     window.open('http://google.com');
 }
});

答案 3 :(得分:1)

$('a').click(function(){window.open('http://yahoo.com');});

答案 4 :(得分: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");
    }
});

Demo

答案 5 :(得分: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');    
});