2016-10-22 65 views
0

這些語法之間有什麼不同,請詳細解釋一下?這些語法之間有什麼不同,請詳細解釋一下嗎?

$(document).on("click", "#index1", function() { 
    $(p).hide(); 
}); 
$("#index2").on("click", "#index1", function() { 
    $(p).hide(); 
}); 
$("#index1").on("click", function() { 
    $(p).hide(); 
}); 
+4

請參閱http://api.jquery.com/on/ – undefined

+0

^這裏有詳細解釋。 – adeneo

+0

堆棧不是學校或教程網站。在某些地方,爲了向您提供代碼所帶來的麻煩請求幫助,這對我來說是一種有效的代碼語法。此外,由於您沒有提及恕我直言不符合資格作爲問題,那麼您應該閱讀並從手冊中學習,嘗試一些事情,如果某些事情不起作用,那麼請回來併發布一篇文章(真實)問題。 –

回答

2

在第一種情況下,您將單擊偵聽器添加到「文檔」,但只有在「#index1」處單擊時纔會執行該偵聽器。 第二步 - 將偵聽器添加到「index2」,並且僅當您單擊位於「#index2」內部的「#index1」時纔會執行該偵聽器。 在第三種情況下,您只需將聽衆添加到「index1」

+0

謝謝你...順便說一句,我第二次感到困惑。現在清楚 –

0

讓我們先想象一個網頁。

<!DOCTYPE html> 
    <html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <button id='index1'>click me</button> 
    </body> 
    </html> 
  1. 這將工作

    <!DOCTYPE html> 
    <html> 
    <head> 
        <title></title> 
    </head> 
    <body> 
        <button id='index1'>click me</button> 
        <script type="text/javascript"> 
         $("#index1").on("click", function() { 
          $(p).hide(); 
         }); 
        </script> 
    </body> 
    </html> 
    
  2. 這不會工作,因爲在執行該腳本不存在的元素。

    <!DOCTYPE html> 
    <html> 
    <head> 
        <title></title> 
    </head> 
    <body> 
        <script type="text/javascript"> 
         $("#index1").on("click", function() { 
          $(p).hide(); 
         }); 
        </script> 
        <button id='index1'>click me</button> 
    </body> 
    </html> 
    

但隨着周圍的工作它會

<!DOCTYPE html> 
    <html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <script type="text/javascript"> 
      $(document).on("click", "#index1", function() { 
       $(p).hide(); 
      }); 
     </script> 
     <button id='index1'>click me</button> 
    </body> 
    </html> 

這是說,只要一個點擊事件在文檔檢查解僱,如果點擊了#index1元素上發射。所以事件如果元素不存在回調被附加到文檔節點。現在,當點擊文檔時,它會檢查它是否源自於#index1