【问题标题】:Remove window.location.href from click event从点击事件中删除 window.location.href
【发布时间】:2015-10-26 18:26:25
【问题描述】:

根据当前的媒体查询,我正在做一个可点击的 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 = ??????
        });
    }

【问题讨论】:

    标签: javascript jquery


    【解决方案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);
    }
    

    【讨论】:

    • hm on else 它正确地删除了可点击的类,但它仍然在点击时重定向我
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2018-08-10
      • 1970-01-01
      • 2021-02-07
      • 2014-04-19
      • 2017-08-17
      相关资源
      最近更新 更多