1

次のjQueryコードがあります(divと関数の名前を変更しましたが、大きな違いはありません)

$(function(){
    $('#div1').bind('touchend',function(){
        function1();
        function2();
    });
});

$(function(){
    $('#div2').bind('touchend',function(){
        function1();
        function3();
    });
});

これはプレーンな JS バージョンであり、動作しません。

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

document.getElementById('div2').addEventListener('touchend',function(){
    function1();
    function3();
},false);

誰かが最初に jQuery バージョンの意味を説明してから、単純な js バージョンで私が犯した間違いを指摘できれば、私は感謝します!

[なぜ私がこれを行っているのか疑問に思っている場合は、作成中のphonegapアプリからjQueryを削除して、ページの読み込みを高速化する必要があります:-)]

4

3 に答える 3

4

コードは、タッチイベントをサポートするすべてのブラウザ/DOMで機能する必要があります。ここで私が理解できる唯一のことは、DOMContentLoaded呼び出すイベントを見逃しているため、まだ準備ができていない要素を取得/クエリしようとすることです。

したがって、コードをにラップする必要があります

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

を呼び出すと、jQueryが自動的にこれを行います$(function() {});。関数を$()そのショートカットに渡す場合$(document).ready(fnc)

于 2012-05-02T11:40:57.453 に答える
1

コードは、ハンドラーを分離しておくだけで、あなたがしていることを正確に実行します。あなたが抱えていた唯一の問題は、使用の欠如でした。

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

これは、domの準備ができておらず、getElementByIdが何も検出しないことを意味します。

于 2012-05-02T11:41:52.667 に答える
0

さて、私はここで他のいくつかの投稿を読みました、そしてこれはかなりそれを釘付けにしました。

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);

しかし、誰かが私にフローとは何か、そしてコードがどのように機能するかを説明できれば、私の一日は終わります:-)

于 2012-05-02T11:39:58.977 に答える