2015-04-30 44 views
-1

我有一個div,我已經添加了jquery點擊事件,所以當你點擊它將你帶到一個url。在同一個div裏面我有一個按鈕來刪除條目。不幸的是,與我的.click事件,當我點擊刪除它確實刪除它,但它也把我帶到了網址。如果點擊是通過按鈕完成的,如何防止.click事件被觸發?阻止jquery動作按鈕裏面的點擊事件

<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
     $(".clickable-row").click(function() { 
      if ($(this).data("href") !== "") { 
       window.open($(this).data("href")); 
      } 
     }); 
    }); 
</script> 


<div class="box gallery clickable-row" id="item" data-href="www.amazon.com"> 
<div class="box-head clearfix"> 
    <div class="left">ghjlhgoig</div> 
    <div class="right">$10</div> 
</div> 
<div class="box-content"> 
    <img src="/images/missing.gif"> 
    <form action="http://local.wishlist.com/lists/view/5" method="post" accept-charset="utf-8"> 
     <input type="hidden" name="itemId" value="19"> 
     <input type="submit" name="delete" value="Delete"> 
    </form> 
</div> 
</div> 

只是要清楚,如果我點擊刪除按鈕,我希望它提交表單,而不是發送給我的網址。

+0

http://jsfiddle.net/L14e6cau/ 2 /在這個例子中,我想點擊刪除按鈕,不會被帶到亞馬遜 –

回答

1

的點擊甚至從刪除按鈕向上傳播。有兩種方法可以解決這個問題。

(1)檢查從事件刪除按鈕向上冒泡:

$(".clickable-row").click(function(event) { 
    if (!$(event.target).is('input[name="delete"]')) { 
     if ($(this).data("href") !== "") { 
      window.open($(this).data("href")); 
     } 
    } 
}); 

(2)從傳播停止事件:

$('input[name="delete"]').click(function(event) { 
    event.stopPropagation(); 
}); 
+0

#1完美工作tytytytyty正是我在我心中,但可以把它在js :) –

+0

我試過#2之前,你建議它,它不起作用,無論出於何種原因。唯一的區別是,我添加了一個id,並使用該名稱代替輸入名稱 –

+0

@ bia.migueis - 兩種方法似乎均可在此[jsdiddle](http://jsfiddle.net/xsoe9h9m/)中使用。 –

0

從函數返回false。

<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
     $(".clickable-row").click(function() { 
      if ($(this).data("href") !== "") { 
       window.open($(this).data("href")); 
      } 
      return false; 
     }); 
    }); 
</script> 

或者將輸入類型更改爲「按鈕」而不是「提交」,這將停止發佈表單。

好吧我明白你現在要問什麼。我認爲你的選擇如下:

1)在URL上添加一個重定向回到請求來自的頁面。

2)或者使用AJAX調用後。請參閱jQuery AJAX

3)發佈到iframe(可能是最簡單的選項)。

+0

[event.stopPropagation()](https://api.jquery.com/event.stoppropagation/)也可能是一個替代方案。 –

+0

返回false使它使我的網址,而不是刪除條目,這是我想要做的,如果我點擊belete按鈕。停止傳播也是如此 –

+0

我試着做ajax文章,但它仍然從.click –

0

編輯:好像你想要改變你的jQuery選擇器從.clickable行到只適用於打開新窗口的按鈕。

garryp是正確的。你也可以使用jQuery方法event.preventDefault();

<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
     $(".clickable-row").click(function(event) { 
      event.preventDefault(); 
      if ($(this).data("href") !== "") { 
       window.open($(this).data("href")); 
      } 
     }); 
    }); 
</script> 

見jQuery的documentation

+0

,這使得它把我帶到的網址,而不是刪除條目,即使我點擊刪除按鈕 –

+0

該div是爲第一塊瓷磚。我希望整個瓷磚是可點擊的,但我也希望瓷磚內的編輯/刪除按鈕,因爲外觀。我不希望它把我帶到網址,當我點擊其中一個按鈕,因爲那不是你想要的,如果你想刪除該項目哈哈 –