sto facendo un programma in cui gli utenti inseriscono ingredienti ingredientiFai primo ingrediente mai in grado di essere cancellato
La mia applicazione si presenta così:
Come si può vedere, la durata primi ingredienti non ha a X alla fine, perché è necessario disporre di almeno un ingrediente, ma il resto degli span ingrediente lo fa. Sto anche usando il Jquery Sortable Plugin quindi, se clicchi vicino a una qualsiasi parte degli ingredienti, puoi modificare l'ordine degli ingredienti. Funziona bene, tranne nel caso in cui si sposti la prima campata di ingredienti, quindi quella span non ha un X alla fine, anche se lo si sposta nell'ultimo punto.
Quindi quello che sto cercando di fare è rendere il primo span di ingredienti sempre senza X alla fine, anche se commutato l'ordine con un altro arco di ingredienti. Ho provato questo:
$('ingredientsCOUNT > span:first').hide(deleteButton);
ma non ha funzionato? Qualche altro suggerimento? Ogni aiuto è molto apprezzato, ed ecco il mio codice:
HTML (il php può semplicemente essere ignorato!)
<div class='formelementcontainer funky'>
<label for="ingredient">Ingredients</label>
<div id='ingredientsCOUNT' class='sortable'>
<span>
<input type="text" class='small' name="ingredient" id="ingredient" placeholder='QTY'/>
<select name='measurements'>
<option value='' name='' checked='checked'>--</option>
<?foreach ($measurements as $m):?>
<option value='<?=$m->id;?>'><?=$m->measurement;?></option>
<?endforeach;?>
</select>
<input type="text" name="ingredient" id="ingredient" placeholder='Ingredient'/>
</span>
</div>
<div class="clear"></div>
<div class='addSPAN tabover'>
<a class='float-right' id='btnAddIngredients' href='#'>Add Ingredient</a>
</div>
</div>
jQuery
(function($) {
$(document).ready(function() {
$('#btnAddIngredients').click(function() {
var num = $('#ingredientsCOUNT span').length;
var newNum = new Number(num + 1);
var deleteButton = $("<a class='float-right' style='margin:10px 2px;' href='#'><img src='<? echo base_url()."public/img/delete.png";?>' height='11' width='11' /></a>");
deleteButton.click(deleteThis);
$('#ingredientsCOUNT > span:first')
.clone()
.attr('name', 'ingredient' + newNum)
.append(deleteButton)
.appendTo('#ingredientsCOUNT')
.fadeIn();
$('ingredientsCOUNT > span:first').hide(deleteButton); //THIS IS MY SOLUTION THAT DIDN'T WORK
});
function deleteThis() {
var span = $(this).closest('span')
span.fadeOut('slow', function() { span.remove(); });
}
$(".sortable").sortable(); //jQuery Sortable initialized
});
})(jQuery);
O usare i CSS (quello bfavaretto suggerisce) o l'API ordinabili per determinare quale eliminare gli elementi per nascondere/mostrare (non il primo nella lista) quando la lista è stato ordinato – Ian