2013-01-12 92 views
0

我爲我的web應用程序使用jquery。我希望它適用於觸摸屏設備的桌面瀏覽器和移動布袋。父母和孩子的單獨觸摸事件

我有一個div,和裏面的一些元素:

<div class="well listItem element-div alert-error" data-state="removing"> 
    <strong>Item title</strong> <small>Items count</small> 
    <div class="pull-right" style="margin-top: -5px;"> 
     <a class="btn btn-success approve-button"><i class="icon-ok icon-white"></i></a> 
     <a class="btn btn-danger cancel-button"><i class="icon-remove icon-white"></i></a> 
    </div> 
</div> 

我趕上點擊和.listItem級(頂級DIV)和每次元素相同的事件touchend事件(.approve-按鈕和.cancel-button),但是當我點擊桌面瀏覽器上的'a'元素時,它正常工作,並且當我在iOS Safari瀏覽器或WindowsPhone InternetExplorer中的'a'元素上按下時,父母div,但不適用於'a'。如果我爲父div刪除事件偵聽器,則「a」元素的事件在移動瀏覽器中正常工作。當我觸摸它的一個可用空間時,我想讓parent-div事件起作用,當我觸摸'a'元素時 - 我只想要'a'事件偵聽器繼續。你能告訴我如何區分它們嗎?

回答

2

您是否嘗試過檢查事件目標?

$(".listItem").on("click", function(event){ 
    if (event.target === this) { 
    // clicked exactly on this element 
    } 
}); 
0

我有類似的問題,只有我的內容是更多的嵌套。要排除你想到哪裏去處理其他事件的區域(div的,類或其他方式),使用:不選擇,就像這樣:

<article> 
    <div class="title"> 
     <span class="title"></span> 
     <div class="buttons"> 
      <div class="minimize">+</div> 
      <div class="remove">x</div> 
     </div> 
    </div> 
    <div class="post"> 
     ... 
    </div> 
</article> 

使用jQuery:

$("article :not(.buttons, .minimize, .remove)").click(function (event) { 
    // toggle display value of div.post 
}); 

該觸發器裏面文章任何地方點擊事件,除了.buttons.minimize卸下襬臂的div。