我有以下代码
$(document).on('click','#container.pagination .active', function(){
var page = $(this).attr('p');
loadData(page);
});
返回错误
未捕获的TypeError:对象#没有方法'on'
我发现一旦我禁用使用JQuery 1.8.2的JQuery UI 1.9.0,问题就会得到解决。但JQ UI是我项目的重要组成部分,因此无法从页面中删除。
我尝试了一种替代方案,可以帮助我在不使用.on的情况下获得相同的结果,但似乎甚至没有触发。有语法错误吗? 我换了
$(document).on('click','#container.pagination .active', function(){
与
$('#container .pagination .active').click(function(){
现在就像这样:
$('#container .pagination .active').click(function(){
alert(loadData(page));
//$(document).on('click','#resultBox .pagination .active', function(){
var page = $(this).attr('p');
loadData(page);
//echo $page;
});
但是,该功能甚至没有被触发......
当我在这个场景中使用.on VS .click时,是否存在差异?这是导致其功能失调的原因?
=========有关故障排除的更新内容=================== 以下是我在Chrome浏览器错误报告中找到的更多信息:
Uncaught TypeError: Object #<Object> has no method 'on' jq_iface_testScores_with_pagination.js:176
(anonymous function) jq_iface_testScores_with_pagination.js:176
c.extend.ready jquery.tools.min.js:38
L jquery.tools.min.js:45
这是否意味着它也处理jquery工具......这种情况越来越严重...... 请帮忙。
====目前大多数调查结果 - 实际发现的问题!如何解决?============ 发现之前的错误,实际问题在于JQ Tools 1.2,它可以使用JQ1.7.2。我认为它与我的JQ1.9.1的.on函数有些矛盾。我试过多个页面。经过测试,即使只是加载JQTool 1.2也会导致问题,甚至不会实际使用它。 如何在不删除jquerytool 1.2的情况下解决此问题?每次都返回相同的错误消息。
==解决方案== 在 smerny 的持续帮助之后,我得出一个解决方案,最后,问题实际上是处理OUTDATED jquery.tool库。 问题是因为jq.tool lib是1.2.3而不是1.2.7。有时,事情只是如此简单,但需要很长时间才能理解和探索。
Aagain,谢谢 smerny !这是你应得的代表:)
谢谢!
答案 0 :(得分:3)
之间的区别
$(document).on('click','#container .pagination .active', function(){
和
$('#container .pagination .active').click(function(){
这是第一个,它使用委托。这意味着在进行绑定之前,选择器中的元素不必存在。
在第二个中,元素需要在绑定之前存在。
如果$(document)
无效,请尝试选择正文:
$("body").on('click','#container .pagination .active', function(){
只有在某些时候动态加载这些元素时才有必要......如果它们立即被加载,那么我假设你只需要将代码包装在$(document).ready( function() { ... })
块中:
$(document).ready( function() {
$("body").on('click','#container .pagination .active', function(){
...
});
答案 1 :(得分:0)
这些是可能的选择:
$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+