jQuery 可拖放 - 如果可放置区域包含 li 元素,则隐藏占位符
jQuery Drag and Droppable - Hide placeholder if droppable area has li elements
我正在使用 jQuery Droppable 插件。
如果 Dropped <ul>
有一个或多个元素,我想隐藏一个占位符。它适用于拖放功能。最重要的是,我还实现了点击方法。它还将通过单击拖动容器中的星形图标来克隆 <li>
元素。但是在这个方法中,我无法隐藏占位符。
请检查下面的代码:::
HTML
<div class="mn-items">
<h2>Drag</h2>
<div id="catalog">
<ul class="rp-draggable">
<li class="one">Item 1 <i class="fa fa-star-o"></i></li>
<li class="two">Item 2 <i class="fa fa-star-o"></i></li>
<li class="three">Item 3 <i class="fa fa-star-o"></i></li>
<li class="four">Item 4 <i class="fa fa-star-o"></i></li>
<li class="five">Item 5 <i class="fa fa-star-o"></i></li>
<li class="six">Item 6 <i class="fa fa-star-o"></i></li>
</ul>
</div>
</div>
<div class="header-favorites">
<h2>Drop Here...</h2>
<ul class="h-droped-list">
<li class="placeholder">Placeholder (hides if it has items)</li>
</ul>
</div>
jQuery
$(document).ready(function(){
/* jQuery Droppable */
$(function() {
$( ".mn-items .rp-draggable li" ).draggable({
appendTo: "body",
helper: "clone"
});
$( ".header-favorites ul" ).droppable({
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
accept: ":not(.ui-sortable-helper)",
drop: function( event, ui ) {
$( this ).find( ".placeholder" ).remove();
$(ui.draggable).clone().appendTo(this);
}
}).sortable({
items: "li:not(.placeholder)",
sort: function() {
$( this ).removeClass( "ui-state-default" );
}
});
});
/* Click Star Icon to Add to Drop Here Container */
$('ul.rp-draggable li .fa-star-o').click(function(){
$(this).closest('li').clone().appendTo('.h-droped-list');
$(this).closest('li').toggleClass('addedToFav');
});
/* Click Close Icon to Remove from Drop Here Container */
$("ul.h-droped-list").on('click','li .fa-star-o',function(){
$(this).closest('li').remove();
});
/* Hide Placeholder if it has Items, Show if it is empty */
if($(".header-favorites ul li:not(.placeholder)").length > 0) {
$(".header-favorites ul li.placeholder").hide();
}else{
$(".header-favorites ul li.placeholder").show();
}
});
我给你一个link到Fiddle。我做了一些可能对您有帮助的更新,但您还有一些工作要做。如果你需要的话,我稍后会帮助你。
js
$(document).ready(function(){
/* jQuery Droppable */
$(function() {
$( ".mn-items .rp-draggable li" ).draggable({
appendTo: "body",
helper: "clone"
});
$( ".header-favorites ul" ).droppable({
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
accept: ":not(.ui-sortable-helper)",
drop: function( event, ui ) {
$( this ).find( ".placeholder" ).hide();
$(ui.draggable).clone().appendTo(this);
}
}).sortable({
items: "li:not(.placeholder)",
sort: function() {
$( this ).removeClass( "ui-state-default" );
}
});
});
/* Click Star Icon to Add to Drop Here Container */
$('ul.rp-draggable li .fa-star-o').click(function(){
var $target = $(this).closest("li"),
$dropedList = $(".h-droped-list");
if(!$target.hasClass("addedToFav")){
$target
.addClass("addedToFav")
.clone()
.appendTo($dropedList);
$dropedList
.find(".placeholder")
.hide();
}else{
//do what you want
}
});
/* Click Close Icon to Remove from Drop Here Container */
$("ul.h-droped-list").on('click','li .fa-star-o',function(){
var $target = $(this).closest("li"),
$dropList = $target.parent("ul");
$target.remove();
if($dropList.children().length == 1){
var $lastItem = $($dropList.children()[0]);
$lastItem.hasClass("placeholder") && $lastItem.show();
}
});
/* Hide Placeholder if it has Items or Show if it is empty */
if($(".header-favorites ul li:not(.placeholder)").length > 0) {
$(".header-favorites ul li.placeholder").hide();
}else{
$(".header-favorites ul li.placeholder").show();
}
});
我正在使用 jQuery Droppable 插件。
如果 Dropped <ul>
有一个或多个元素,我想隐藏一个占位符。它适用于拖放功能。最重要的是,我还实现了点击方法。它还将通过单击拖动容器中的星形图标来克隆 <li>
元素。但是在这个方法中,我无法隐藏占位符。
请检查下面的代码:::
HTML
<div class="mn-items">
<h2>Drag</h2>
<div id="catalog">
<ul class="rp-draggable">
<li class="one">Item 1 <i class="fa fa-star-o"></i></li>
<li class="two">Item 2 <i class="fa fa-star-o"></i></li>
<li class="three">Item 3 <i class="fa fa-star-o"></i></li>
<li class="four">Item 4 <i class="fa fa-star-o"></i></li>
<li class="five">Item 5 <i class="fa fa-star-o"></i></li>
<li class="six">Item 6 <i class="fa fa-star-o"></i></li>
</ul>
</div>
</div>
<div class="header-favorites">
<h2>Drop Here...</h2>
<ul class="h-droped-list">
<li class="placeholder">Placeholder (hides if it has items)</li>
</ul>
</div>
jQuery
$(document).ready(function(){
/* jQuery Droppable */
$(function() {
$( ".mn-items .rp-draggable li" ).draggable({
appendTo: "body",
helper: "clone"
});
$( ".header-favorites ul" ).droppable({
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
accept: ":not(.ui-sortable-helper)",
drop: function( event, ui ) {
$( this ).find( ".placeholder" ).remove();
$(ui.draggable).clone().appendTo(this);
}
}).sortable({
items: "li:not(.placeholder)",
sort: function() {
$( this ).removeClass( "ui-state-default" );
}
});
});
/* Click Star Icon to Add to Drop Here Container */
$('ul.rp-draggable li .fa-star-o').click(function(){
$(this).closest('li').clone().appendTo('.h-droped-list');
$(this).closest('li').toggleClass('addedToFav');
});
/* Click Close Icon to Remove from Drop Here Container */
$("ul.h-droped-list").on('click','li .fa-star-o',function(){
$(this).closest('li').remove();
});
/* Hide Placeholder if it has Items, Show if it is empty */
if($(".header-favorites ul li:not(.placeholder)").length > 0) {
$(".header-favorites ul li.placeholder").hide();
}else{
$(".header-favorites ul li.placeholder").show();
}
});
我给你一个link到Fiddle。我做了一些可能对您有帮助的更新,但您还有一些工作要做。如果你需要的话,我稍后会帮助你。
js
$(document).ready(function(){
/* jQuery Droppable */
$(function() {
$( ".mn-items .rp-draggable li" ).draggable({
appendTo: "body",
helper: "clone"
});
$( ".header-favorites ul" ).droppable({
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
accept: ":not(.ui-sortable-helper)",
drop: function( event, ui ) {
$( this ).find( ".placeholder" ).hide();
$(ui.draggable).clone().appendTo(this);
}
}).sortable({
items: "li:not(.placeholder)",
sort: function() {
$( this ).removeClass( "ui-state-default" );
}
});
});
/* Click Star Icon to Add to Drop Here Container */
$('ul.rp-draggable li .fa-star-o').click(function(){
var $target = $(this).closest("li"),
$dropedList = $(".h-droped-list");
if(!$target.hasClass("addedToFav")){
$target
.addClass("addedToFav")
.clone()
.appendTo($dropedList);
$dropedList
.find(".placeholder")
.hide();
}else{
//do what you want
}
});
/* Click Close Icon to Remove from Drop Here Container */
$("ul.h-droped-list").on('click','li .fa-star-o',function(){
var $target = $(this).closest("li"),
$dropList = $target.parent("ul");
$target.remove();
if($dropList.children().length == 1){
var $lastItem = $($dropList.children()[0]);
$lastItem.hasClass("placeholder") && $lastItem.show();
}
});
/* Hide Placeholder if it has Items or Show if it is empty */
if($(".header-favorites ul li:not(.placeholder)").length > 0) {
$(".header-favorites ul li.placeholder").hide();
}else{
$(".header-favorites ul li.placeholder").show();
}
});