2009-09-27 245 views
0

问题解决了,我在我的代码所做的另一个愚蠢的错误...对不起,谢谢点击事件触发

例如:

<div id="window1Header" class="windowHeader"> 
    Window 1 <a id="min1" class="minimize">[-]</a> <a id="max1" class="maximize">[+]</a> 
</div> 
<script> 
    $(function() { 

    $(".windowHeader").mousedown(function() { 
     $(this).parent().css({"border" : "#000 1px dashed"}); 
     $(this).parent().draggable({ containment: 'parent' }); 
    }); 
$(".windowHeader").mouseup(function() { 
     $(this).parent().css({"border" : "#ccc 1px solid"}); 
     setTimeout(function() { 
      $(this).parent().draggable('destroy'); 
      }, 100); 
    }); 

    $('#min1').click(function(e) { 
    e.stopPropagation(); 
     $("#window1Body").hide().slideUp(500); 
}); 
$('#max1').click(function(e) { 
    e.stopPropagation(); 
     $("#window1Body").hide().slideDown(500); 
}); 

    }); 
</script> 

的outerdiv(window1Header)有一个鼠标按下和释放事件和2个链接(min1和max1)都有点击事件。但点击链接会触发绑定到window1Header的事件。 我如何触发正确的事件? 我正在使用jquery库btw。

任何帮助表示赞赏!

+0

你还可以提供你用来连接事件的jQuery代码吗? – smack0007

回答

2

通常,使用stopPropagation来防止事件冒泡到父元素。例如:

$('.minimize').click(function(e) { 
    e.stopPropagation(); 
    ... 
}); 
+0

mmm,它似乎从不触发事件,因此您的解决方案无法解决它。我会在我的问题中添加更多的代码来解释。 – Overbeeke

+0

问题解决了,这是我在代码中犯的一个愚蠢的错误,无论如何都要感谢 – Overbeeke

0

您需要至少在您的a标签上有一个href =“#”,否则click事件将永远不会触发。另外,在点击事件中返回false。

$('#max1').click(function(e) { 
    $("#window1Body").hide().slideDown(500); 
    return false; 
}); 
+0

那是不对的。我把链接放在div的外面,并且触发得很好的事件。问题在于链接在div内。点击链接时唯一引发的事情就是div事件,所以它不会冒泡,它会立即触发父事件。 – Overbeeke