Ich habe ein Div-Feld, das beim Anklicken ein Dropdown-Menü erstellt. Wenn Sie auf die Auswahloptionen klicken, wird der Name in das div-Feld #proposal-type
verschoben. Sie können weiter klicken, um weitere Optionen hinzuzufügen.
Mein Problem ist, wenn ich auf das x klicke, um die Wahl zu entfernen, kann ich nicht herausfinden, wie man das gesamte drop-item
, das gerade war, zum Entfernen und füllen Sie wieder in die Dropdown-Liste. Im Moment geht nur das x zurück in die Optionsliste.
Hat jemand irgendwelche Ideen?
Könnte auch jemand bitte einen kurzen Hinweis darauf teilen, wie man die Optionsboxliste verschwinden lässt, wenn ich außerhalb davon klicke? Es bleibt einfach dort, egal was gerade passiert.
$('#proposal-type').click(function() {
$('#proposal-type-drop').addClass('active');
});
$('#proposal-type').text("Type of Project *");
$('.drop-item-input').on('change', function() {
var proposalVal = "";
var proposalHtml = "";
$('.drop-item-input').each(function() {
if ($(this).is(":checked")) {
proposalVal += $(this).val();
proposalHtml += '<div class="drop-item-selected"><span class="drop-item-close"></span>' + $(this).val() + '</div>';
$(this).closest('label').fadeOut();
};
//else if ($(this).is(":checked") === false) {
// \t $(this).closest('label').fadeIn();
//};
$('#proposal-type').val(proposalVal).html(proposalHtml);
$('#proposal-type-drop').removeClass('active');
});
//values
var type = $('.drop-item-input:checked').map(function() {
return $(this).val();
}).get().join(', ');
console.log(type);
});
$(document).on('click', '.drop-item-close', function() {
console.log("Triggered");
$(this).fadeOut("medium", function() {
$(this).detach().appendTo('#proposal-type-drop').fadeIn();
});
$(this).is(":checked") === false;
$(this).closest('label').fadeIn();
$(this).closest('.drop-item-selected').fadeOut();
});
.panel-input {
box-sizing: border-box;
border: 1px solid #858585;
display: inline-block;
vertical-align: top;
width: 45%;
margin: 1.5% 2% 2.5% 2%;
}
.proposal-input {
width: 100%;
}
#proposal-type-drop {
width: 45%;
display: none;
position: absolute;
}
#proposal-type-drop.active {
background: rgba(0, 0, 0, 1);
display: block;
height: auto;
z-index: 1;
}
.drop-item {
color: #FFF;
font-size: 1rem;
padding: 7px 5px;
font-family: 'Open Sans', sans-serif;
background: rgba(0, 0, 0, .8);
display: block;
width: 100%;
cursor: pointer;
}
.drop-item-input {
display: none;
}
.drop-item-selected {
background: #0085A1;
color: #333333;
padding: 5px;
font-size: .9rem;
font-weight: bold;
font-family: 'Roboto', sans-serif;
width: auto;
display: inline-block;
margin: 0 3px;
}
.drop-item-close {
display: inline-block;
background-image: url("http://www.clipartbest.com/cliparts/dT8/xnA/dT8xnAqAc.png");
background-size: 10px 10px;
background-repeat: no-repeat;
height: 10px;
width: 10px;
margin-right: 10px;
cursor: pointer;
transition: ease 0.1s;
-webkit-transition: ease 0.1s;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="panel-input">
<div id="proposal-type" class="proposal-input"></div>
<div id="proposal-type-drop">
<label class="drop-item">Apple<input type="checkbox" name="prop-type[]" class="drop-item-input" value="Apple"></label>
<label class="drop-item">Banana<input type="checkbox" name="prop-type[]" class="drop-item-input" value="Banana"></label>
<label class="drop-item">Cake<input type="checkbox" name="prop-type[]" class="drop-item-input" value="Cake"></label>
</div>
</div>
In einem Click-Handler bezieht sich "this" auf das Element, auf das geklickt wurde, das X. Sie sollten 'this' verwenden können, um den richtigen Wert zu finden, obwohl' $ (this) .parent(). Text() 'oder ähnlich – James
@James Danke für die Hilfe. Ich habe etwas herausgefunden, mit Ihrem Rat, aber es beginnt zu versauen, wenn Sie versuchen, ein Element zurück zum ausgewählten Status hinzufügen .. https://jsfiddle.net/xrrpw1mq/1/ – Paul
Auch kann ich nicht scheinen Finde heraus, wie du den damit verknüpften Checked-Wert entfernen kannst. – Paul