.unbind()无法处理event.preventDefault()

时间:2014-10-27 15:19:59

标签: javascript jquery

我有一个响应式Javascript文件,可以在解绑基本jQuery函数上成功运行。

当浏览器设置为平板电脑时,导航将根据点击切换,因此我禁用链接到任何具有ul的li元素。

$('.main-navigation .menu > ul > li > a, .main-navigation .menu > ul > li > ul > li:has(ul) > a').on('click', function(event) {
   event.preventDefault();
});

然后当浏览器大小超过平板电脑约束时,我试图用这个重新启用链接功能(我尝试了3种不同的方式):

$('.main-navigation .menu > ul > li > a, .main-navigation .menu > ul > li > ul > li:has(ul) > a').unbind('on');

$('.main-navigation .menu > ul > li > a, .main-navigation .menu > ul > li > ul > li:has(ul) > a').unbind('click');

$('.main-navigation .menu > ul > li > a, .main-navigation .menu > ul > li > ul > li:has(ul) > a').on('click', function(event) {
   return true;
});

如果我能提供其他可能有帮助的内容,请告知我

1 个答案:

答案 0 :(得分:0)

我能够在这里找到解决我自己问题的方法。以为我会张贴以防其他人有类似的问题。

我的自适应JavaScript每个屏幕大小有2个功能。我有这样的事情:

function tabletInit() {
 // add jQuery that is supposed to fire within these constraints
    function mobileNavInit() {
    var submenus = $('.main-navigation .children');

    submenus.each(function() {
      var parentLink = $(this).prev(),
          parentHref = parentLink.attr('href'),
          overview = '<li class="overview"><a href="'+parentHref+'">Overview</a></li>';

      $(overview).prependTo($(this));
    });

    }

    $('.main-navigation .menu > ul > li > a, .main-navigation .menu > ul > li > ul > li:has(ul) > a').on('click', function(event) {
   event.preventDefault();
});

}

function tabletClear() {
 // undo or 'unbind()' anything that should be cancelled out if tablet is sized above

$(overview)unbind('prependTo');
$('.main-navigation .menu > ul > li > a, .main-navigation .menu > ul > li > ul > li:has(ul) > a').unbind('click');

}

干扰是概述功能的解除绑定之一。虽然取消绑定是根据需要执行的,但它最终干扰了其他一些JavaScript。所以我只是将其改为:

$('.overview, .overview2').remove();