2013-02-18 107 views
0

我有這樣的JS代碼:jQuery將找不到元素

(function($, undefined) { 
    $("a").click(function(event) { //or another elemtnt 
     alert('Hello!'); 
    }) 
})(jQuery); 

當然鏈接:

<a href="http://google.ru/" target="_blank">Google</a> 

的JS代碼不工作,但如果我把它改爲:

(function($, undefined) { 
    $("*").click(function(event) { 
     alert('Hello!'); 
    }) 
})(jQuery); 

所有的作品!

+0

請您提供的jsfiddle? – jantimon 2013-02-18 12:05:41

+0

如果添加此代碼在控制檯(鉻) - 所有完美的http://jsfiddle.net/A2WhV/ – row248 2013-02-18 12:08:02

+0

它也適用於前者的情況:http://jsfiddle.net/KsFWZ/ – 2013-02-18 12:08:48

回答

3

如果你已經把你的JavaScript的a節點被載入像你描述的效果將是什麼了。試試這個:

$(function() { 
    $("a").click(function(event) { //or another elemtnt 
     alert('Hello!'); 
    }) 
}); 

這將在DOM樹準備好時調用匿名函數。以下是JSFiddle中的一個示例。

當您使用*作爲選擇器時,jQuery將單擊處理函數添加到html元素,這就是您獲取警報的原因。

-1

這是一個可能的解決方案:

$(document).ready(function() { 
    // put all your jQuery goodness in here. 
}); 

你爲什麼不給一個ID給它,並選擇$('#my-id')設置的事件?

0

你爲什麼不試試document.ready?

$(document).ready(function(){ 
    $('a').click(function(){ 
     alert("a"); 
    }); 
});