0

要素を動的に作成した Phonegap アプリに取り組んでいます。アプリはここで見ることができます ユーザーがアコーディオン メニューをクリックして要素の選択を表示すると、要素が作成されます。次に、ユーザーはメニューから画像をクリックして、レイアウトに追加する新しい要素を選択できます。ブラウザーは、新しい要素というラベルの付いた div に新しい要素が挿入されることを警告します。

これがキッカーです。jQuery タッチ プラグインを使用して、新しく作成された要素を画面にドラップできるようにしています。新しい要素が作成されると、class="touchMove" が要素に追加されます。問題は、タッチ機能を新しい要素にバインドできないように見えることです。

live()、delegate()、および on() を試しました。クリック時に警告ボックスをバインドして表示するクリック イベントを取得できますが、新しい要素にバインドするタッチ イベントを取得できません。テスト目的でクリックを追加しました。「タッチ」に変更すると、関数に対して定義されるパラメーターを探しているため、何も得られません。IDK!

$('#newElement').delegate("img","click",function(){
                           // alert('I was clicked');
                            $(this).touch({
                                            animate: false,
                                            sticky: false,
                                            dragx: true,
                                            dragy: true,
                                            rotate: false,
                                            resort: true,
                                            scale: false
                                            });

                            });

繰り返しますが、アラート機能のコメントを外し、タッチ機能をコメントアウトすると、アラートが機能します。アラートをコメントアウトし、タッチ機能のコメントを外すと、何も起こりません..このプロセス中にエラーは表示されません。

この機能を使用すると、ページの読み込み時にタッチ機能を適切に受け取るページに3つの要素があります

$('.touchMove').touch({
                           animate: false,
                           sticky: false,
                           dragx: true,
                           dragy: true,
                           rotate: false,
                           resort: true,
                           scale: false
                           });

「#2 Touch Me :)」要素は正常に機能します。クラス(「touchMove」は正常に機能しています)を追加し、そのクラスを使用してタッチ機能を新しい要素にアタッチしようとしています。

ちなみに、タッチ機能はデバイス(Android、iPad)でしか動作しないので、実際のパソコンのブラウザで見るとタッチイベントは動きません。

この問題についての助けをいただければ幸いです。

4

1 に答える 1

1

使ってみませんか

//start to touch
$("body").on("touchstart mousedown","#newElement",function(e){
    alert("you started to touch");
});

//moving
$("body").on("touchmove mousemove","#newElement",function(e){
    alert("you moved");
});

//finished touching
$("body").on("touchstop mouseup","#newElement",function(e){
    alert("you stopped touching");
});

ドキュメントの読み込み時にすべてのイベントがバインドされるため、「live」または「on」を使用する必要があります。したがって、初期読み込み後にdomに追加されたオブジェクトにバインドされた新しいイベントは、コールバック内に含めるか、jqueryでバインドする必要があります。ライブ'または'オン'。

マウスイベントを含めることもできるので、タッチスクリーンが利用できないときにも機能が機能します。

于 2012-04-24T14:53:30.517 に答える