2013-02-18 111 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"); 
    }); 
});