on 、 menasでjquerycycle plugin
をアタッチしたい:.live()
div element
現在私はやっています:
$("div").cycle();
しかし、私はやりたい:
$("div").live("which event ?", function() { $(this).cycle(); });
これどうやってするの?
on 、 menasでjquerycycle plugin
をアタッチしたい:.live()
div element
現在私はやっています:
$("div").cycle();
しかし、私はやりたい:
$("div").live("which event ?", function() { $(this).cycle(); });
これどうやってするの?
イベントを自動的にトリガーしますか? はいの場合、これが解決策です。
要素にカスタム ハンドラーを適用します。
$("div").live("yourEvent", function() { $(this).cycle(); });
次に、trigger() 関数を使用してこのイベントを発生させることができます。
$("div").trigger("yourEvent");
残念ながら、サプライズでアイテムをバインドする良い方法はありません。私はここにいるイベントです。代わりに、.live
(または.on
、前者は非推奨であるため)のようなメソッドは、マウスおよびキーボードのイベント(一般的に言えば)でより便利です。
プラグインをすべてのdiv.cycleMe
要素に自動的に適用するための最良の方法は、それらの新しい要素をページにロードする関数のcallbakメソッドにそのロジックを配置することです。たとえば、そのインスタンスが$.ajax
新しいデータを取得した場合、次のようになります。
$.ajax({
url: "/getSlider",
success: function( data ) {
$("#sliders")
.append(data).find("div.cycleMe:not(.active)")
.addClass("active").cycle();
}
});
スライダーがにロードされた#sliders
後、コールバック関数が実行されます。.cycleMe
クラスを持たないすべての要素を検索し、.active
クラスを追加してから、.cycle()
それらに対してメソッドを呼び出します。ここでのクラスは、以前にロードされたスライダー.active
でcycleメソッドを再度呼び出さないようにするためのものです。
あなたがしようとしていることは不可能です。オブジェクトでjQueryメソッドを呼び出すことはイベントのようなものではないため、「ライブ」の方法で呼び出すことはできません。
まず第一に、.live()
非推奨です。.delegate()
古い jQuery と.on()
バージョン 1.7 以降で使用することをお勧めします。
また、動的要素にプラグインをロードしている場合、要素のロード時にプラグインをアタッチしてみませんか?
例:
$.get(url,data,function(html){
$(html) //wrap with jQuery
.appendTo(somewhere) //add somewhere
.cycle(html); //add cycle
});