Javascript jquery.on不工作
当使用Javascript jquery.on不工作,javascript,jquery,Javascript,Jquery,当使用$(document).on('ready',function(){//})时,没有发生任何事情,因此我改为$(document).ready(function(){//}) 当使用.on函数时,其不工作并引发如下错误和验证: 警告: jQuery.Deferred exception:制表符[i]。on不是函数类型错误: 制表符[i]。on不是一个函数 在HTMLDocument。() 在j() 在k() 未定义 错误: 未捕获类型错误:制表符[i]。on不是函数 在HTMLDocume
$(document).on('ready',function(){//})
时,没有发生任何事情,因此我改为$(document).ready(function(){//})
当使用.on函数时,其不工作并引发如下错误和验证:
警告:
jQuery.Deferred exception:制表符[i]。on不是函数类型错误:
制表符[i]。on不是一个函数
在HTMLDocument。()
在j()
在k()
未定义
错误:
未捕获类型错误:制表符[i]。on不是函数
在HTMLDocument。(script.js?ver=4.9.1:7)
在j处(jquery-3.2.1.min.js?ver=4.9.1:2)
在k处(jquery-3.2.1.min.js?ver=4.9.1:2)
注意:tabs是我在script.js中定义的变量
注意:我在minify版本中使用jqueryv3.2.1(最新版本)
为什么会出现错误
My script.js:
$(document).ready(function() {
alert("ready");
var tabs = $("ul.nav-tabs > li");
for (i = 0; i < tabs.length; i++) {
tabs[i].on("click", switchTab);
}
function switchTab(event) {
event.preventDefault();
console.log(event);
}
});
$(文档).ready(函数(){
警惕(“准备就绪”);
var标签=$(“ul.nav-tabs>li”);
对于(i=0;i
$(文档).on('ready')
从jQuery 3.0
还有$(document).on(“ready”,handler),从jQuery 1.8开始就被弃用,并在jQuery 3.0中删除
错误指向以下内容:
tabs[i].on(...
不用于文档.ready
事件
因为.on()
是jQuery对象上的函数,而不是JavaScript中任何HTML元素上的函数。当您循环查看jQuery对象的结果时,HTML元素正是您得到的
你不需要一开始就循环。您已经有一个jQuery对象:
$("ul.nav-tabs > li")
您只需在该对象上调用.on()
:
$(document).ready(function() {
$("ul.nav-tabs > li").on("click", switchTab);
function switchTab(event) {
event.preventDefault();
console.log(event);
}
});
您不需要for循环:
$(document).ready(function() {
var tabs = $("ul.nav-tabs > li");
tabs.on('click', switchTab)
function switchTab(event) {
event.preventDefault();
console.log(event);
}
});
那么这有什么问题呢
tabs[i].on("click", switchTab);
在本例中,您使用的是括号表示法,它是jQuery的选项卡的缩写。get(i)
。该方法返回DOM对象,但不返回jQuery对象。因为DOM没有这个属性,所以它会抛出一个错误
那么,你如何修复它呢?可以使用eq()返回jQuery对象
tabs.eq(i).on("click", switchTab);
但是,当jQuery为您执行时,为什么要自己循环这些元素呢
tabs.on("click", switchTab);
试试这个
$(document).ready(function() {
$(document).on("ul.nav-tabs li" ,"click", function(event){
event.preventDefault();
console.log(event);
});
});
使用var tabs=$(“ul.nav-tabs>li”).toArray();您不需要使用循环$(“ul.nav-tabs>li”)。在(“单击”,切换选项卡)上,首先为什么要在循环中执行此操作?只需执行:
$(“ul.nav-tabs>li”)。打开(“单击”,切换选项卡)代码>没有兄弟,问题是。即使看到第一段也不起作用。让我检查一下参考资料!问题不在回路,on不工作,.on给出的错误是,当我使用3.2的jquery时.on不是一个函数。1@AnimeshSahu我为你们做了一把小提琴:我想使用循环,因为有两个li元素,当按下一个元素时,我想跟踪it@AnimeshSahu:如果您有多个选择器,则应在问题中包含该代码。当前您只有一个选择器。显示的代码中不需要任何循环。谢谢,这完全给了我切换tab的两个元素,但是你的答案的问题是我不能用2 li循环element@AnimeshSahu当前位置不清楚你那是什么意思。这是一个什么样的问题?什么不起作用?我已经回答了3.2.1 jquery的问题,谢谢你对这个问题感兴趣!!快乐编码!它抛出$this未定义。。。。感谢您的关注,您的答案不是我的解决方案这是一个错误,您可以将$(此)替换为“事件”,它将起作用