2011-08-12 75 views
28

我有一個簡單的問題。下面的代碼適用於所有標籤:jquery onclick div

$('*').click(function(e) { 
    alert(1); 
}); 

但是,當我嘗試此代碼爲DIV ID爲「內容」:

$('#content').click(function(e) { 
    alert(1); 
}); 

我在做什麼錯?

+0

我不知道,你在做什麼錯誤(如在錯誤/意外)? –

回答

38

確保它是一個文檔準備tagAlternatively中,嘗試使用.live

$(document).ready(function(){ 

    $('#content').live('click', function(e) { 
     alert(1); 
    }); 
}); 

例子:

$(document).ready(function() { 
 
    $('#content').click(function(e) { 
 
     alert(1); 
 
    }); 
 
});
#content { 
 
    padding: 20px; 
 
    background: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
 
<div id="content">Hello world</div>

在jQuery 1.7中,.live的( )方法已被棄用。使用.on()附加事件處理程序。

$('#content').on("click", function() { 
    alert(1); 
}); 
0

看看這個fiddle ...你做得對。確保id是內容,並檢查是否有其他具有相同id的元素。如果有多個具有相同ID的元素,它將綁定到第一個元素。這可能是你沒有看到它的原因。

+0

謝謝,我忘了提及的另一件事是,任何其他標籤不起作用(身體,HTML等..) – CoachNono

8

沒有。

$('#content').click(function(e) { 
    alert(1); 
}); 

將綁定與設置ID的現有 HTML元素content,並會顯示在點擊一個消息框。

  • 確保#content使用代碼
  • 到ID爲獨特
  • 檢查你的Javascript控制檯對任何錯誤或問題
1

可與ID在div =」之前存在內容「不會創建此事件時附加?你可以試試live()jquery方法。

否則可能有多個div具有相同的ID,或者你只是拼寫錯了,它發生......

1

包裹代碼$(document).ready()方法或$()

$(function(){ 

$('#content').click(function(e) { 
    alert(1); 
}); 

}); 
+0

庫爾,不要忘記標記爲答案:) – ShankarSangoli

+1

每當你想找到任何元素或附加事件do元素的處理函數確保你在$()或$(document).ready()方法中執行。 '$(「*」)'因爲它將事件附加到文檔並使用事件冒泡機制來執行事件處理程序。 – ShankarSangoli