Hack:使用jQuery禁用单击单击

时间:2012-02-20 22:18:31

标签: javascript jquery jquery-plugins

我正在攻击一个图库插件,我想禁用缩略图的点击事件并将其替换为悬停事件。

这就是我所做的: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;
  });


});

该插件不允许我设置要使用的事件。因此,我只需在其上添加一些调整,而不是从代码中更改它。

所以我想禁用“缩略图”的点击事件,而只是使用“悬停”事件。

有没有想法?只要符合我的要求,我也会接受其他方法。

谢谢!


尝试实施Steph 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);

编辑:我的解决方案:

我使用return false来限制它进入url,但它不会限制调用该函数。还有其他想法吗?

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

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

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

        }
    );

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

2 个答案:

答案 0 :(得分:3)

您想使用jQuery's unbind方法取消绑定点击事件。调用插件后必须调用它。 E.g:

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

答案 1 :(得分: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
}