Javascript jQuery代码的纯JS版本
我有以下jQuery代码(我已经更改了div和函数的名称,不会有太大区别) 这是它的纯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
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做事情:-)