2010-11-23 8 views
0

これを適切に表現する方法がわからないので、私にご負担ください。私は次のように見えるのjQueryの作品を持っている:jQuery:既存のイベントハンドラ(Cloud Zoom Plugin)で.live()を使用するにはどうすればよいですか?

jQuery(document).ready(function() { 
    $('#main-image').live('mouseover', function() { 
    $(this).wrap(function() { 
     return '<a href=' + $(this).attr('src').replace(/\bproduct\b/, 'original') + ' class="cloud-zoom" id="zoom1" rel="adjustX: 10, adjustY:-4, position: \'inside\'">'; 
    }); 

    }); 
    $('#main-image').live('mouseout', function() { 
    var link_element = $(this).closest('a'); 
    link_element.parent().append($(this)); 
    link_element.remove(); 
    }); 
}); 

私のHTMLマークアップも同様に簡単です:

<img alt="foo" id="main-image" src="/assets/products/1051/product/Perspective_View-0.jpeg?1290039436"> 

私が持っている問題は、私は雲のズームのjQueryを使用しようとしているありますプラグイン:http://www.professorcloud.com/mainsite/cloud-zoom.htmと私はここでイベントをバインドしている方法の性質が好きではありません。 wrap()呼び出しが静的にHTML内にあるときにアンカータグを事前定義すると、プラグインは完全に機能します。アンカータグをDOMに動的に追加すると、クラウドズームが機能しません。私はそれを静的に行うことができない理由は、私は写真の行を持っていると、それらの写真の1つをクリックすると、それは拡大されているメインイメージ要素に行きます。その時点で、クラウドズームをイメージにバインドするようにします。上記のJavaScriptは、自身を追加してimgタグの周りを動的に削除するのに効果的ですが、クラウドズームのイベントハンドラはおそらくDOMロードのアンカータグにアタッチされているため、クラウドズームには適していません後に。

これを修正する方法はありますか、クラウドズームソースに何らかのjQuery.live()機能を組み込むようにハッキングする必要がありますか?

+0

私はあなたがソースに潜入する必要があると思う:D。たぶんクラウドズームプラグインがオブジェクトに機能を追加するためのカスタム関数や呼び出しがあります。これが助けてくれたらと思っています。 – Fred

答えて

0

cloud zoomソースを見ると、実際には.bind()が使用されますが、もちろんハンドラを既存の要素にバインドするだけです。メインのクラウドズームsrcの.bindを検索して.liveに置き換えるだけですべてがうまくいくはずです。

+0

私は多くの運が無ければこれを試しました。 – randombits

関連する問題