Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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代码的纯JS版本_Javascript_Jquery_Javascript Events - Fatal编程技术网

Javascript jQuery代码的纯JS版本

Javascript jQuery代码的纯JS版本,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我有以下jQuery代码(我已经更改了div和函数的名称,不会有太大区别) 这是它的纯JS版本,不起作用 document.getElementById('div1').addEventListener('touchend',function(){ function1(); function2(); },false); document.getElementById('div2').addEventListener('touchend',function(){ func

我有以下jQuery代码(我已经更改了div和函数的名称,不会有太大区别)

这是它的纯JS版本,不起作用

document.getElementById('div1').addEventListener('touchend',function(){
    function1();
    function2();
},false);

document.getElementById('div2').addEventListener('touchend',function(){
    function1();
    function3();
},false);
如果有人能先解释jQuery版本的含义,然后指出我在使用纯js版本时犯了什么错误,我将不胜感激


[如果你想知道我为什么要这样做,我需要从我正在构建的phonegap应用程序中删除jQuery,以便页面加载更快:-)]

好的,我在这里读了几篇其他文章,这篇文章非常准确

document.addEventListener('DOMContentLoaded', function () {
                      var div1 = document.getElementById('div1');
                      var div2 = document.getElementById('div2');
                      // event handler
                      var handler = function (event) {
                        function1();
                        function2();
                      };
                      var handler2 = function(event) {
                        function1();
                        function3();
                      };
                      // Bind the events
                      div1.addEventListener('touchend', handler, false);
                      div2.addEventListener('touchend',handler2,false);
                      }, false);

但是如果有人能告诉我流程是什么,代码是如何工作的,我的日子就这样度过了:-)

好的,我在这里读了几篇其他的帖子,这篇文章非常成功

document.addEventListener('DOMContentLoaded', function () {
                      var div1 = document.getElementById('div1');
                      var div2 = document.getElementById('div2');
                      // event handler
                      var handler = function (event) {
                        function1();
                        function2();
                      };
                      var handler2 = function(event) {
                        function1();
                        function3();
                      };
                      // Bind the events
                      div1.addEventListener('touchend', handler, false);
                      div2.addEventListener('touchend',handler2,false);
                      }, false);

但是,如果有人能向我解释什么是流程以及代码是如何工作的,那么我的日子就结束了:-)

您的代码应该在任何支持触摸事件的浏览器/DOM中工作。这里我唯一能想到的是,您错过了要调用的
DOMContentLoaded
事件,因此,尝试获取/查询尚未准备好的元素

因此,您应该将代码包装到

document.addEventListener('DOMContentLoaded', function () {
}, false);

当您调用
$(function(){})时,jQuery会自动为您执行此操作。如果将函数传递到
$()
中,则这是
$(document.ready(fnc)

的快捷方式。您的代码应该可以在任何支持触摸事件的浏览器/DOM中工作。这里我唯一能想到的是,您错过了要调用的
DOMContentLoaded
事件,因此,尝试获取/查询尚未准备好的元素

因此,您应该将代码包装到

document.addEventListener('DOMContentLoaded', function () {
}, false);

当您调用
$(function(){})时,jQuery会自动为您执行此操作。如果您将函数传递到
$()
中,这是
$(document.ready(fnc)

的快捷方式。代码与您的代码完全相同,只是将处理程序分开,我想您遇到的唯一问题是没有使用

document.addEventListener('DOMContentLoaded', function () {

这意味着dom还没有准备好,getElementById找不到任何东西。

代码与您的代码完全相同,只是将处理程序分开,我认为您遇到的唯一问题是没有使用

document.addEventListener('DOMContentLoaded', function () {

这意味着dom还没有准备好,getElementById找不到任何东西。

@BenniKa:那条评论是指巨魔吗?如果没有,那你就大错特错了。@BenniKa很抱歉通知你,但是你错得再错不过了(读起来像Chandler;-))你也试过ontouchend=function(){}吗?当然,如果它适合在你的应用程序环境中使用。@gillesc是的,我做了。。但我在下面贴出的答案是有效的。为什么它有效,我还不知道。在分析code.Cos时,DOM已经准备好了,您忘记了$(document.ready()的等价物;或者在原始的post$(function(){})中;(短版)@BenniKa:这句话是指巨魔吗?如果没有,那你就大错特错了。@BenniKa很抱歉通知你,但是你错得再错不过了(读起来像Chandler;-))你也试过ontouchend=function(){}吗?当然,如果它适合在你的应用程序环境中使用。@gillesc是的,我做了。。但我在下面贴出的答案是有效的。为什么它有效,我还不知道。在分析code.Cos时,DOM已经准备好了,您忘记了$(document.ready()的等价物;或者在原始的post$(function(){})中;(短版)谢谢,你能解释一下为什么jquery代码可以工作吗?我的意思是,那里没有任何东西。。编辑:酷,谢谢你的编辑。理解:-)谢谢,你能解释一下为什么jquery代码可以工作吗?我的意思是,那里没有任何东西。。编辑:酷,谢谢你的编辑。理解:-)这基本上类似于在.ready()事件中编写jquery代码。DOMContentLoaded确保元素在尝试将事件侦听器绑定到它们之前存在。在将处理程序放入touchend侦听器之前,将其放入匿名函数纯粹是为了可读性,而不是为了花时间解释:-)。。还是jQuery的新手:-)。。这基本上就像在.ready()事件中编写jquery代码一样。DOMContentLoaded确保元素在尝试将事件侦听器绑定到它们之前存在。在将处理程序放入touchend侦听器之前,将其放入匿名函数纯粹是为了可读性,而不是为了花时间解释:-)。。还是jQuery的新手:-)。。喜欢只使用JS做事情:-)