0

Framework7 に HTML ページ posts.html があります。posts.html 部分の JS コードは次のとおりです。

myApp.onPageInit('posts', function (page) {
    openPostsPageFromDB(function(html){
        html = '<ul>'+html+'</ul>';
        $$(".posts-page div.posts").html(html);
        pageJS();
    });
});
function pageJS(){
    $$(".post a,.post .post-channel-image,.post #tags").on("click",function(e){
        e.stopPropagation();
    });
}

openPostsPageFromDB は、DB から値を取得した後に HTML コンテンツを返します。posts.html の HTML コンテンツを対応する戻り値に置き換えてから、pageJS() を呼び出して、HTML の特定の要素のクリック イベント ハンドラーをオーバーライドします。

ただし、イベントはオーバーライドされておらず、Framework7 でデフォルトで定義されているイベント ハンドラーが起動されています。これに対する回避策はありますか?

4

1 に答える 1

1

jQuery メソッド.on("click",function(e){})は、別のイベント リスナーを要素のイベント リスナー キューに追加するだけです。したがって、あなたの場合、すべてのクリック イベント リスナーをキャンセルする場合は、次のようなものが必要になります。

.unbind('click');

更新 #1

このunbindメソッドは jQuery 1.7 で廃止されたため、代わりにoffメソッドを使用する必要があります。

.off('click');
于 2015-12-28T08:03:00.773 に答える