11

jQuery Mobile での次の違いに頭を悩ませているようには見えません。

$( document ).live('pageshow', function(event) {
});

$( document ).bind('pageshow', function(event) {
});

$( document ).delegate("#page", "pageshow", function() {
});

特定のページで異なるドキュメントの head でスクリプトを実行するにはどうすればよいですか? これらのスクリプトを呼び出すには、どの方法を使用すればよいですか?

更新: jQuery バージョン: 1.7.1 jQuery Mobile バージョン: 1.1.0

4

3 に答える 3

15

次のように、jQuery Mobile が公開する「ページ イベント」にバインドしますpageinit

$(document).delegate('#my-page', 'pageinit', function () {
    //this is like document.ready for this pseudo-page
});

jQuery Core 1.7.1 を使用.on()しているので、構文が少し異なるものを使用できます。

$(document).on('pageinit', '#my-page', function () {
    //this is like document.ready for this pseudo-page
});

3 つのメソッドはすべて、同様のことを行います。withをルート選択.live()として使用するのと同じことですが、減価償却されているため、使用を停止することをお勧めします (ソース: http://api.jquery.com/on )。要素を直接使用することは使用することと同じですが、使用する場合は、関数呼び出しではなくイベント ハンドラーでイベントが発生した疑似ページを特定する必要があります。.delegate()document.bind()document.delegate().bind()

例えば:

$(document).bind('pageshow', function () {
    var id = $.mobile.activePage[0].id;
    //you can use $.mobile.activePage to do work on the current page
});

一般に、要素が DOM にいつ存在するかわからない場合は、イベント委任が使用されます。ルート選択に到達するまでDOMをバブリングするイベントに依存しています(あなたの場合、それは常にdocument要素です)。

のドキュメント.delegate(): http://api.jquery.com/delegate

これらの関数の違いに関するより一般的な情報については、次の記事を参照してください (正確性を確認するために読んだところ、正しいです) 。 jquery-bind-vs-live.html

于 2012-05-09T16:23:53.283 に答える
0

これは優れた説明です: http://jquerybyexample.blogspot.com/2010/08/bind-vs-live-vs-delegate-function.html

しかし、簡単に言えば、jquery 1.7 を使用している場合は、おそらく次のいずれかの代わりに新しい API on() を使用する必要があるということです: http://api.jquery.com/on/

于 2012-05-09T16:23:44.003 に答える
0

先日も同じ質問がありましたが、この記事でそれぞれについて明確な内訳が提供されていることがわかりました。

http://jquerybyexample.blogspot.com/2010/08/bind-vs-live-vs-delegate-function.html

于 2012-05-09T16:25:34.553 に答える