2012-02-20 137 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); 

編輯:我的解決方案:

我用返回false從去到URL限制,但它確實不限制調用函數。任何替代的想法?

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

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

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

     } 
    ); 

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

嘗試'$(「本」)觸發(「點擊」);' – mgraph 2012-02-20 22:37:43

+0

是的,這正是我想要做的。感謝您指出引號和懸停。 – Pennf0lio 2012-02-20 23:02:50

回答

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 2012-02-20 23:06:54

+0

@ Pennf0lio檢查你是否得到了記錄'$('。ad-thumb-list a')'的元素,如果返回'[]'選擇器是錯誤的。 – NicoSantangelo 2012-02-20 23:12:20

+0

是的,它正確地返回元素。我正在嘗試做你的建議。我的代碼是正確的嗎?我似乎無法調用該函數。 謝謝! – Pennf0lio 2012-02-20 23:19:47

3

您想使用jQuery's unbind方法來解除綁定click事件。它將不得不在調用插件後調用。例如: -

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

不會禁用我的函數來懸停嗎?因爲我打電話給我的懸停事件點擊事件... – Pennf0lio 2012-02-20 22:31:49

+0

是的。而不是添加$(this).click();在懸停方法的內部,你可以通過原始點擊方法添加插件調用的實際代碼嗎? – 2012-02-20 22:41:09

+0

不確定調用哪個方法。我想這一點link.click( 函數(){ context.showImage(I); context.slideshow.stop(); 將返回false;} ) 但對我來說 – Pennf0lio 2012-02-20 23:03:50