2012-09-04 41 views
0

使用此代碼,Firefox僅在按鈕單擊時發出警報。對於Chrome,這兩個警報都會顯示。嵌套的jQuery在Chrome和Firefox中單擊事件不同

我希望行爲與Chrome中的行爲相同,其中點擊時(由Firefox忽略)會觸發img事件。

注:我的實際代碼更長更實用。我將它提煉成了一小段代碼,以隔離導致我在別處痛苦的根源行爲。

<html> 
    <head> 
     <script src="http://app.essets.com/system/application/js/jquery/jquery.js" type="text/javascript"></script> 
     <script type='text/javascript'> 
      $(document).ready(function() { 
       $('button').click(function(){ 
       alert('button clicked'); 
       }); 
       $('img').click(function(){ 
       alert('img clicked'); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <button type='button'> 
      <img id="1" class="moduleratingstar" src="http://app.essets.com/images/site/transactions.png"> 
      Some text 
     </button> 
    </body> 
</html> 

回答

1

我不認爲你將能夠在瀏覽器中重現Chrome瀏覽器的行爲 - 我甚至不確定規格說明了什麼。然而,你可以創建一個「假」按鈕,也就是說,使用其他HTML元素的樣式來看起來像一個按鈕。這樣,實施這樣的行爲將是一件容易的事。

Take a look at this fiddle.

+1

該規範說明按鈕不允許包含交互式內容。我認爲這包括任何帶有點擊處理程序的節點。因此,大多數瀏覽器在查找點擊處理程序時會忽略嵌入按鈕中的節點。如果您嘗試在按鈕內放置「a」元素,則會看到相同的問題 - 單擊該鏈接可在Chrome和Safari中使用,但不會在Firefox或IE中使用。 – Barmar

+0

這很有道理。我會改變它是一個風格的股利。感謝您的幫助。 –

+0

謝謝,@Barmar。爲了完整性,它在Opera中也不起作用。 – Andre