在函数中使用切换类

时间:2015-10-25 02:10:28

标签: javascript jquery css

我有一个触发mouseenter(覆盖)事件的函数,我随后必须解除绑定。在该函数中,有一个x我想关闭叠加层并允许用户重新触发事件。现在,它不能使用unbind(我需要),即使我从我的代码中取出unbind事件,css格式也会关闭。

这是我的功能:

$(function() {
  $(document).mouseenter(function(event){
    event.stopPropagation();
    var docHeight = $(document).height() - ($(document).height() * .1); 
    if(event.pageY > docHeight){
      $("#overlay").show();
      displayOverlay();
      displayModal(itemCount, imageArray, cartTotal);
      $(this).unbind('mouseenter mouseleave');
    }
    $("#x").click(function(){
      $("#overlay").hide();
    });
  });
}); 

这是我的CSS:

function displayOverlay() {
  $("<div id='overlay'></div>").css({
    "position": "fixed",
    "top": "0px",
    "height": "1200px",
    "width": "100%",
    "z-index": 100,
    "background-color": "rgba(0,0,0,0.5)"
  }).appendTo("body");
}

function displayModal(itemCount, imageArray, cartTotal) {
  var imageHTML = "";
  for (i = 0; i < imageArray.length; i++){
    imageHTML += imageArray[i];
  }
  if (imageHTML === ""){
    imageHTML = "You do not have any items in your cart";
  }
  $("<article id='modal'><div id='itemCount'>" + "Total Items: "
    + itemCount + "<div id='images'>" + imageHTML +
    "<div id='cartTotal'>" + "Subtotal $" + cartTotal + "<div id='x'>"
    + "(X)" + "</div></div></div></div></article>").css({
    "width": "461px",
    "height": "263px",
    "line-height": "200px",
    "position": "fixed",
    "top": "50%",
    "left": "50%",
    "margin-top": "-155px",
    "margin-left": "-232px",
    "background-color": "rgb(255,255,255)",
    "border-radius": "5px",
    "text-align": "center",
    "z-index": 101,
    "border": "1px solid rgb(227,227,227)",
    "border-top": "4px solid rgb(217,0,31)"
  }).appendTo("#overlay");
  $("#itemCount").css({
    "position": "relative",
    "bottom": "79px",
    "font-family": "Helvetica",
    "color": "#000",
    "font-size": "20px"
  }).appendTo("#modal");
  $("#images").css({
    "position": "relative",
    "bottom": "87px"
  }).appendTo("#itemCount");
  $("#cartTotal").css({
    "position": "relative",
    "bottom": "182px",
    "color": "gray",
    "font-size": "18px"
  }).appendTo("#images");
  $(".buttons").css({
    "line-height": "10px",
    "position": "relative",
    "bottom":"86px"
  }).appendTo("#cartTotal");
  $("#x").css({
    "position": "relative",
    "top": "9px",
    "font-size": "16px"
  }).appendTo(".buttons");
  $("a").css({
    "color": "white"
  });
}

1 个答案:

答案 0 :(得分:0)

不要使用$(this),而是尝试指定实际的元素(或选择器)名称。

$(document).unbind('mouseenter').unbind('mouseleave');

另外,可能是因为您在一个unbind()函数中指定了这两个事件。