0

以下のコードでライブを使用したいスクリプトがあります。

if($('#Menu').length >0) {
   $('#Menu >li').click(function() {

   });  
}

どうすれば使用できますか?

4

6 に答える 6

5

1.7で廃止されたため、代わりに使用してくださいlive

if($('#Menu').length) {
   $('#Menu').on('click', '> li', function() {

   });  
}

http://api.jquery.com/live/

jQuery 1.7以降、.live()メソッドは非推奨になりました。.on()を使用して、イベントハンドラーをアタッチします。古いバージョンのjQueryのユーザーは、.live()ではなく.delegate()を使用する必要があります。

jQueryバージョン< 1.7とを使用している場合は、デリゲート>= 1.4.2を使用できます

   $('#Menu').delegate('> li', 'click', function() { // different argument order than on

   });
于 2012-04-25T07:02:28.007 に答える
2

あなたはそうしない。

.live()を優先して非推奨になり.delegate()、その後.delegate().bind()など)をを優先して非推奨になりました.on()

.live()後継者の実装例

これにより、同様の結果が得られる可能性があります。

$('#Menu').on('click', '> li', function(){

});

お持ちでない場合は.on().delegate()

すでに述べたように、.live()が廃止されたため、ご使用のバージョンのjQueryで利用でき.delegate()ない場合は、最初に使用してみてください。.on().delegate()

$('#Menu').delegate('> li', 'click', function(){

});

live()似たようなことをする例

を主張する場合は.live()、次のようなコードを記述できます。

$('#Menu > li').live('click', function(){

});

質問からの修正例

一般に、イベントハンドラーを追加するために何かが存在するかどうかを確認する必要はありません。jQueryは要素を検索し、見つからない場合はイベントハンドラーを追加しないため、次のように記述できます。

$('#Menu >li').click(function() {

}); 

あなたがあなたの質問に書いたものの代わりに。

于 2012-04-25T07:02:57.483 に答える
1

.live(events、handler(eventObject))

<script>
$("#Menu >li").live("click", function(){

});
</script>
于 2012-04-25T07:02:41.390 に答える
1

は使用しないでくださいlive。あなたが使用する必要がありますon

Liveは非推奨です-使用しないでください。psこれもデリゲート構文を置き換えます-必要に応じて...

2番目のパラメータを指定する必要はありません。そうすると、コンテナ自体とそのすべての子+サブチャイルドをリッスンします。(1.7+)以降

例 :

$(".myDiv").on("click","#myButton",function (){
alert('1');
})
于 2012-04-25T07:03:09.690 に答える
1

私は以下のようなものだと思います:

if($('#Menu').length >0) {
   $('#Menu >li').live('click', function() {

   });  
}

住む

于 2012-04-25T07:03:20.230 に答える
1

jQuery 1.7以降、.live()メソッドは非推奨になりました。.on()を使用して、イベントハンドラーをアタッチします。古いバージョンのjQueryのユーザーは、.live()ではなく.delegate()を使用する必要があります。

あなたの場合、あなたはこのように使うことができます

if($('#Menu').length >0) {
   $('#Menu >li').live("click", function() {

   });  
}
于 2012-04-25T07:03:34.123 に答える