2012-02-20 9 views
0

サムネイルのクリックイベントを無効にして、ホバーイベントに置き換えるギャラリープラグインをハッキングしています。ハック:jQueryでクリックを無効にする

これは私がやったことです:http://jsbin.com/enezol/3

$(function() { 

    var galleries = $('.ad-gallery').adGallery(); 


    $('.ad-thumb-list a').hover(function() { 
    $(this).click(); 
    }); 

    $('.ad-thumb-list a').click(function() { 
    return false; 
    }); 


}); 

プラグインは、私が使用してイベントを設定することはできません。したがって、コードから変更するのではなく、ちょうどその上にちょっとした微調整を追加します。

「サムネイル」のクリックイベントを無効にして、代わりに「ホバー」イベントを使用したいとします。

アイデアはありますか?私は私の要件を満たしている限り、他のアプローチにも開いています。

ありがとうございました!

ステフSkardalとNicosunshineの提案を実装しようと

var thumbs = $('.ad-thumb-list a'), 
    oldfunction = thumbs.data("events").click["function() { context.showImage(i); context.slideshow.stop(); return false; }"]; 

thumbs.unbind("click").hover(oldFunction); 

編集:私の解決策:

私はURLにアクセスしてから、それを制限する場合はfalseを返す使用しますが、それがありません関数を呼び出す際に制限しません。任意の代替アイデア?

var galleries = $('.ad-gallery').adGallery(); 

    var thumbs = $('.ad-thumb-list a'); 

    thumbs .hover(
     function() { 
      $(this).click(); 
     }, 
     function() { 

     } 
    ); 

    thumbs.click(function() { return false; }); 

答えて

0

あなたはclickメソッドのバインドを解除してからhoverに、元の関数をバインドしようとすることができます。

は、あなたが本来の機能を得ることができない場合は、どのようなコンソールのリターンを見て、それを得ることができますをスローする場合:その後、

$('.ad-thumb-list a').data("events").click; //name of the property that has the function 

あなたは、その関数を取得し、実行します。

var thumbs = $('.ad-thumb-list a'), 
    oldfunction = thumbs.data("events").click["theValueYouGotInTheConsole"]; 

thumbs.unbind("click") 
     .hover(oldFunction); 

編集:

Hereは、私が"theValueYouGotInTheConsole"と題したものの例です。私はclickプロパティにアクセスしています。次に "4"はどこにありますか?機能が保存されます。あなたは値をハードコーディングしたくない場合は

あなたが行うことができます。(「クリック」)

var dataEvents = thumbs.data("events").click, 
    oldFunction; 

for(var functionEvent in dataEvents) { 
    oldFunction = dataEvents[functionEvent]; 
    break; //I'm assuming there's only one event 
} 
+0

私のために動作しませんでしたメソッドに名前がないと思う。 coffeescripter.com/code/ad-gallery – Pennf0lio

+0

@ Pennf0lio '$( '。ad-thumb-list a')'をログに記録したい要素があるかどうかをチェックし、 '[]'を返す場合はセレクタが間違っています。 – NicoSantangelo

+0

はい、要素を正しく返しています。私はあなたの提案をしようとしています。私のコードは上記の通りですか?私はその機能を呼び出すことができない。 ありがとう! – Pennf0lio

3

あなたは、クリックイベントをバインド解除するために、jQuery's unbindメソッドを使用します。プラグインが呼び出された後に呼び出される必要があります。例えば:

$('.ad-thumb-list a').unbind('click'); 
+0

これは私のホバーにも私の機能を無効にしませんか?私のホバーイベントでクリックイベントを呼び出すので... – Pennf0lio

+0

はい。 $(this).click()を追加する代わりに。ホバーメソッドの内部で、プラグインによって呼び出された実際のコードを元のクリックメソッドで追加できますか? –

+0

どのメソッドが呼び出されているのか不明です。私はこのうちlink.clickを試してみました( 機能(){ context.showImage(I); context.slideshow.stop(); 復帰はfalse;} ) が、私 – Pennf0lio

関連する問題