2009-09-27 287 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