J'ai besoin de créer ou d'utiliser une bibliothèque pour créer une sélection HTML personnalisée pour supprimer chaque élément de la sélection HTML. Quelque chose comme ça:
<select>
<option value="volvo">Volvo</option> <button>delete</button>
<option value="saab">Saab</option> <button>delete</button>
<option value="mercedes">Mercedes</option> <button>delete</button>
<option value="audi">Audi</option> <button>delete</button>
</select>
J'ai cherché comment faire cela et toutes les bibliothèques existantes, mais je n'ai rien trouvé. Dans IOS existe this . J'ai besoin de quelque chose comme ça, mais pour le HTML.
UPDATE: Quelque chose comme ça http://jsfiddle.net/b22ww/2/
Utilisez ceci:
<ul>
<li><input type="radio" name="list" value="volvo">Volvo <button>delete</button></li>
<li><input type="radio" name="list" value="saab">Saab <button>delete</button></li>
<li><input type="radio" name="list" value="mercedes">Mercedes <button>delete</button></li>
<li><input type="radio" name="list" value="mercedes">Mercedes <button>delete</button></li>
</ul>
Ajoutez ensuite des écouteurs d’événements à chaque bouton qui supprime le <li>
parent de la liste ( Démo sur jsfiddle.net ).
Ce que vous devez accomplir est tout à fait impossible avec select
. Ce dont vous avez besoin est de créer quelque chose comme une listview
, comme ceci:
HTML
<ul>
<li>item one <div class='deleteMe'>X</div></li>
<li>item two <div class='deleteMe'>X</div></li>
<li>item three <div class='deleteMe'>X</div></li>
....
</ul>
et lier un gestionnaire de clics
JS
$(".deleteMe").on("click", function(){
$(this).closest("li").remove();
});
voir cet exemple
Si vous êtes prêt à utiliser les plugins jQuery, choisi vous permet de personnaliser certains éléments. Dans votre cas, consultez la section intitulée "Support sélectionné et désactivé".
J'ai fait quelque chose comme ça ...
$(document).ready(function() {
$(".deleteMe").on("click", function() {
if (confirm('Are you sure to delete?')) {
$(this).closest("li").remove();
} else {
return false
}
return false;
});
$('li').click(function(e) {
alert($(this).text());
$('#selected').html('<img class="trigger" src = "https://i.stack.imgur.com/LFSrX.png">' + $(this).text().trim().slice(0, -1));
$('.dropdown-container').hide();
});
$(window).click(function() {
$(".dropdown").css("border", "1px solid #444");
$('.dropdown-container').hide();
});
$("#selected").on("click", function(e) {
$(".dropdown").css("border", "1px solid orange");
$('.dropdown-container').show();
return false;
});
});
li {
list-style: none;
background: white;
margin: 2px;
padding: 5px;
}
.deleteMe {
float: right;
color: red;
}
.dropdown-container {
display: block;
position: absolute;
border: 2px solid gray;
padding: 5px;
background: white;
width: 290px;
height: 200px;
overflow-y: scroll;
}
li:hover {
background-color: #ead6b7;
}
.dropdown {
position: relative;
border: 1px solid #444;
border-radius: 3px;
width: 300px;
height:30px;
background-color: #CCC;
padding-top: 10px;
padding-left: 3px;
}
.dropdown .trigger {
padding-top: 10px;
position: absolute;
right: 0;
top: 1px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="selected" class="dropdown">
<img class="trigger" src="https://i.stack.imgur.com/LFSrX.png"> Select Something!
</div>
<div class="dropdown-container" style="display:none">
<li>item one selected
<div class='deleteMe'>X</div>
</li>
<li>item two selected
<div class='deleteMe'>X</div>
</li>
<li>item three selected
<div class='deleteMe'>X</div>
</li>
<li>item four selected
<div class='deleteMe'>X</div>
</li>
<li>item five selected
<div class='deleteMe'>X</div>
</li>
<li>item six selected
<div class='deleteMe'>X</div>
</li>
<li>item seven selected
<div class='deleteMe'>X</div>
</li>
<li>item eight selected
<div class='deleteMe'>X</div>
</li>
<li>item nine selected
<div class='deleteMe'>X</div>
</li>
<li>item ten selected
<div class='deleteMe'>X</div>
</li>
</div>
J'espère que cela aidera quelqu'un!
Ce n'est pas valide HTML. Tu ne peux pas faire ça.
Vous pouvez le faire en utilisant une sélection SIMULÉE (un groupe de HTML/JS qui se comporte comme une sélection, mais n'en est pas un)
Vous ne pouvez pas avoir le bouton dans la sélection. Une autre option consiste à le déplacer en dehors de la sélection, comme dans cette démo .
html:
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<button>Delete current choice</button>
Exemple de script:
var button=document.getElementsByTagName("button")[0],
select=document.getElementsByTagName("select")[0];
button.onclick=function(){
select.removeChild(select.options[select.selectedIndex]);
};