0

インタラクションを動的にロードされたリンクにバインドしようとしています:

HTML:

<div id="content">
    My dynamic content will be here.
</div>

JS:

$(function(){
    loadContent();
    $('#content').css('height',400);


    $('#content').on('click','a',function(){
        alert();
    });
});

これはデスクトップでは問題なく動作し、Android では非常に短いコンテンツで動作します。

ただし、Android では長いコンテンツでは機能しません (Eclipse では JS エラーは発生しません)。それでも、作業ページと非作業ページのコンテンツの長さ以外の違いは特定していません。そのため、人為的にコンテンツの長さを制限しようとしましたが、うまく機能しています。

何が起こっているかの手がかりはありますか?

// 編集

この質問を入力するときにいくつかの基本的な間違いを犯したため、コードを更新しました。このバージョンは、コアの問題をよりよく反映しています。

// 編集

私は最終的に、競合を引き起こした原因を特定することができました。これは、コンテンツがロードされた後の div の css 更新によるものです。Weinre を使用して高さスタイル属性を人為的に削除すると、リンクは再びクリック可能になります!

4

2 に答える 2

0

on()呼び出しは DOM 対応ハンドラー内にある必要があり、イベント名は次のようにフィルター要素の前に来る必要があるため、これがデスクトップでどのように機能しているかはまったくわかりません。

$(function(){
    loadContent();

    $('#content').on('click', 'a', function(e) {
        alert('something');    
    });
});
于 2013-10-03T10:42:20.373 に答える
0

まず、ドキュメントの準備が整った関数をラップloadContentとに修正しますon

次に、ページが読み込まれた後にコンテンツを読み込む場合。bodyこのようにイベントをバインドする必要があります

$(function(){

    loadContent();

    $('body').on('click', '#content a', function(){
        alert('Hello world!');
    });

});
于 2013-10-03T10:49:41.917 に答える