从click事件中删除window.location.href

时间:2015-10-26 10:16:33

标签: javascript jquery

根据当前的媒体查询我正在做一个div可点击。如果不匹配max-width:767px,那么我绑定了锚点的url。但如果匹配查询,我不想在点击上做任何事情。有没有办法在其他地方删除它??

   if (!window.matchMedia('(max-width: 767px)').matches) {
        jQuery(el).addClass("clickable");

        jQuery(el).click(function (e) {
            window.location.href = jQuery(el).find("a").attr("href");
        });
    }else{
        jQuery(el).removeClass("clickable");

        jQuery(el).click(function (e) {
            window.location.href = ??????
        });
    }

2 个答案:

答案 0 :(得分:1)

您应该在if条件之外移动点击事件 - 它将更容易处理。

var result = !window.matchMedia('(max-width: 767px)').matches;

jQuery(el).click(function (e) {
    if (result) {
        window.location.href = jQuery(el).find("a").attr("href");
    }
}).toggleClass("clickable", result);

或者只使用unbind方法:

var clickFunction = function (e) {
    window.location.href = jQuery(el).find("a").attr("href");
};

if (!window.matchMedia('(max-width: 767px)').matches) {
    jQuery(el).addClass("clickable").click(clickFunction);
} else {
    jQuery(el).removeClass("clickable").unbind('click', clickFunction);
}

答案 1 :(得分:0)

如果是这种情况,您无法编辑代码,您可以通过在其后添加相关代码来覆盖功能。

   if (window.matchMedia('(max-width: 767px)').matches) {
        jQuery(el).removeClass("clickable");
    }