jQuery - 悬停仅适用于每个第 2 个 div



>我有一个问题。我正在从输入表单创建一个div,但是当我使用 .hover 函数悬停鼠标时,它仅适用于每隔一个div 元素(第一个、第三个、第五个、第 7 个......我该如何解决这个问题?JS函数有什么问题?感谢您的回答。

.JS:

$("#entryButton").click(function(){
  event.preventDefault(); //stops refreshing
  var query = $("#entry").val(); //string z inputa
  if (query !== "") {
    var trashButton = "<button class='trash'>DEL</button>"
    var registry = "<div class='drag'>" + "<p>" + query + "</p>" + trashButton + "</div>"
    $("#list").append(registry); //add div with query and ubbton
    $("#list").sortable({
      //axis: "y",
    });
    $(".drag").hover(function() {
      $(this).toggleClass("mousehover")
    });
    $("#entry").val(""); //clear value
    return false; //also stops refreshing
    console.log(registry);
  }
})

.HTML:

<div class="container">
  <form>
    <input type="text" id="entry">
    <button id="entryButton">button</button>
  </form>
  <ul id="list">
  </ul>
</div>

.CSS:

body {
  font-size: 14px;
}
form {
  float:right;
}
.container {
  min-width:300px;
  width:20%;
  margin: 0 auto;
  margin-top:5px;
}
.drag {
  margin-top:5px;
  background-color:lemonchiffon;
  display:inline-flex;
  width:100%;
}
.trash {
  position:absolute;
  margin-left:190px;
}
.mousehover {
  opacity:0.5;
}

问题是您多次添加hover事件。最好只做一次,使用 $(document).on() .

$("#entryButton").click(function(){
  event.preventDefault(); //stops refreshing
  var query = $("#entry").val(); //string z inputa
  if (query !== "") {
    var trashButton = "<button class='trash'>DEL</button>"
    var registry = "<div class='drag'>" + "<p>" + query + "</p>" + trashButton + "</div>"
    $("#list").append(registry); //add div with query and ubbton
    $("#list").sortable({
      //axis: "y",
    });
    $("#entry").val(""); //clear value
    return false; //also stops refreshing
    console.log(registry);
  }
});
$(document).on("mouseenter mouseleave", ".drag", function() {
  $(this).toggleClass("mousehover");
});
body {
  font-size: 14px;
}
form {
  float:right;
}
.container {
  min-width:300px;
  width:20%;
  margin: 0 auto;
  margin-top:5px;
}
.drag {
  margin-top:5px;
  background-color:lemonchiffon;
  display:inline-flex;
  width:100%;
}
.trash {
  position:absolute;
  margin-left:190px;
}
.mousehover {
  opacity:0.5;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div class="container">
  <form>
    <input type="text" id="entry">
    <button id="entryButton">button</button>
  </form>
  <ul id="list">
  </ul>
</div>

在这里,您可以使用解决方案 https://jsfiddle.net/wcu4w1mn/

$("#entryButton").click(function(){
  event.preventDefault(); //stops refreshing
  var query = $("#entry").val(); //string z inputa
  if (query !== "") {
    var trashButton = "<button class='trash'>DEL</button>"
    var registry = "<div class='drag'>" + "<p>" + query + "</p>" + trashButton + "</div>"
    $("#list").append(registry); //add div with query and ubbton
    $("#list").sortable({
      //axis: "y",
    });
    $(".drag").last().hover(function() {
      $(this).toggleClass("mousehover")
    });
    $("#entry").val(""); //clear value
    return false; //also stops refreshing
    console.log(registry);
  }
})
body {
  font-size: 14px;
}
form {
  float:right;
}
.container {
  min-width:300px;
  width:20%;
  margin: 0 auto;
  margin-top:5px;
}
.drag {
  margin-top:5px;
  background-color:lemonchiffon;
  display:inline-flex;
  width:100%;
}
.trash {
  position:absolute;
  margin-left:190px;
}
.mousehover {
  opacity:0.5;
}
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div class="container">
  <form>
    <input type="text" id="entry">
    <button id="entryButton">button</button>
  </form>
  <ul id="list">
  </ul>
</div>

仅更改的代码hover添加的事件添加到上次添加的元素。

$(".drag").last().hover(function() {
  $(this).toggleClass("mousehover")
});

希望这对您有所帮助。

最新更新