jquery 事件不适用于 mozilla,适用于其他浏览器

jquery event not working on mozilla and work for other browser

我一直在尝试进行响应式设计,但是点击事件似乎在 mozilla 上被锁定并且在其他浏览器上工作得很好我有以下代码

jQuery(document).ready(function($){

 $("#serach-button").click(function() {
 var display=$("#head-form").css("display");
 if(display!="none"){
  $("#head-form").fadeOut();
 }else{
  $(".menu").hide();
  $("#head-form").show();
 }
 });
  });
<div class="button-responsiv-list">
<button class="button-responsiv"><i id="serach-button"class="glyphicon glyphicon-search"></i></button>
<button class="button-responsiv"><i id="navbar-button" class="glyphicon glyphicon-align-justify"></i></button>
<button class="button-responsiv" ><i id="sidebar-button-show"  class="glyphicon glyphicon-indent-right"></i>
<i id="sidebar-button-hide" style="display:none;" class="glyphicon glyphicon-indent-left"></i>
</button>
</div>

我试过 e.preventDeafualt() 但还是不行。

你的按钮有这个 class .search-btn 所以,你可以试试这个:

$(function(){
   $(".search-btn").click(function() {
      if($("#head-form").is(":visible")){
         $("#head-form").fadeOut();
      }else{
         $(".menu").hide();
         $("#head-form").show();
      }
   });
});

尝试将 "serach" 更改为 "search"。

您也可以将 jQuery 更改为 $:

$(document).ready(function () {
    $("#search-button").click(function () {
        var display = $("#head-form").css("display");
        if (display != "none") {
            $("#head-form").fadeOut();
        } else {
            $(".menu").hide();
            $("#head-form").show();
        }
    });
});

您可能想尝试实时绑定事件,看看是否有所不同。另一个问题可能是您的 css,因为斜体标记是一个内联元素,您可能没有合适的点击事件目标区域(这个 space 可能因浏览器而异)。您可能想尝试绑定到父按钮标签,因为它应该包含子元素。此外,由于斜体标签或按钮没有默认操作,因此没有理由包含 preventDefault() 或 return false.

$(function(){  
    $(document).on("click", "#serach-button", function() {
      if($("#head-form").is(":visible")){
         $("#head-form").fadeOut();
      }else{
         $(".menu").hide();
         $("#head-form").show();
      }
   });
});

还请注意您的 class 名称和 ID 的拼写方式,正如该线程中其他人指出的那样,有几个拼写错误,并且有几个答案已尝试为您更正该拼写。

实际上我会支持你的问题,因为它会导致一个我以前不知道的问题

在 FF 中嵌入按钮内的元素将失去其点击事件。

$("#p").click(function() {
  alert('hello');
});

document.getElementById('i').addEventListener('click', function(e) {
  alert('hello2');
}, false);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="b">
  <img id="i" src="http://lorempixel.com/25/20" />
  <em id="em">elements embedded inside a buttton in FF will lose their click event.</em>
</button>
我不知道这是不是一个错误,因为 specs 只说明

It is illegal to associate an image map with an IMG that appears as the contents of a BUTTON element.

所以对你来说,解决方案是将事件重新附加到按钮(通过将 serach-button id 赋予你的真实按钮元素,或者使用 $("#serach-btn").parent().click(function() {.

jQuery(document).ready(function($) {

  $("#serach-button").parent().click(function() {
    alert('hello');
  });
  $("#real-button").click(function() {
    alert('hello');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button-responsiv-list">
  <button class="button-responsiv"><i id="serach-button" class="glyphicon glyphicon-search"></i>
  </button>
  <button class="button-responsiv" id="real-button"><i id="navbar-button" class="glyphicon glyphicon-align-justify"></i>
  </button>
  <button class="button-responsiv"><i id="sidebar-button-show" class="glyphicon glyphicon-indent-right"></i>
    <i id="sidebar-button-hide" style="display:none;" class="glyphicon glyphicon-indent-left"></i>
  </button>
</div>