Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery.on不工作_Javascript_Jquery - Fatal编程技术网

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未定义。。。。感谢您的关注,您的答案不是我的解决方案这是一个错误,您可以将$(此)替换为“事件”,它将起作用