2015-06-10 36 views
1

我现在很沮丧。我一直试图在过去的半小时内让event delegation工作。我尝试使用.on,Chrome告诉我这不是一个功能。.on或.live功能都不被识别

我搜索了这个问题

$(...).on is not a function - jQuery Error

,并认为这是因为我使用JQuery的早期版本。正因为如此,我决定包括来自谷歌开发者网站上的最新版本的jQuery

https://developers.google.com/speed/libraries/

这里是我包括我的body标签结束

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 

我认为这会解决问题

如果我点击View Source (Ctrl + u)下的链接并点击JQuery文件,我就会得到源代码,这让我相信它已经正确加载了。

我也尝试使用.live函数,发现这不是函数。有几乎没有任何机会,我有一个语法错误或者

$("td > a")[0].on("click", function() { alert('hi') }) 

然而,我从控制台

Uncaught TypeError: $(...)[0].on is not a function at :2:16 at Object.InjectedScript._evaluateOn (:895:140) at Object.InjectedScript._evaluateAndWrap (:828:34) at Object.InjectedScript.evaluate (:694:21)

我也试图复制和粘贴的精缩jQuery代码转换为JavaScript文件中的以下输出,并包括那种方式,但也失败了。

这是Content Distribution Network(CDN)的问题还是版本本身的问题?

我知道JQuery 2只支持现代浏览器,但我使用的是Google Chrome。我无法理解问题是什么。

有没有其他人遇到过这个问题?最受赞赏的是帮助或建议。

编辑:

`jquery.fn.jquery` returns `2.1.3` 
+0

你可以添加html吗? –

+1

在浏览器中输入jQuery.fn.jquery并告诉我输出结果 –

+0

返回'2.1.3' –

回答

3

您正在尝试一个jQuery方法适用于原始DOM对象。使用指定的索引,不再有jQuery对象被选中。

此外,您构造on()函数的方式不使用事件委托。试试这个:

$(document).on("td > a:eq(0)", "click", function() { alert('hi') }); 
+2

'td> a:eq(0)'是否更符合jQuery语法? –

+0

这完美的作品!我会在4分钟内接受这个答案。非常感谢 –

+0

这也适用于'on('click')'语法 –