J'essaie de créer une nouvelle utilisation pour un outil déjà implémenté que nous utilisons ici au travail, mais je suis très sûr de faire quelque chose de mal.jQuery Ajout et suppression de lignes Problème
Je n'arrive pas à comprendre comment faire pour supprimer une ligne. Et même plus, je peux comprendre comment tout cloner dans .pt-entry, et l'avoir répliqué à l'intérieur de l'entrée .pt-incremental ... mais sans les informations renseignées par l'utilisateur.
Espérons que cela a du sens.
Vous pouvez consulter mon Pen here, mais voici la répartition de code pour le reste de yous:
HTML:
<table class="manage-pt" id="0">
<tr class="pt-entry">
<td class="pt-toggle-group">
<input type="button" class="pt-button togPTbutton" value="?" />
<input type="button" class="pt-button addPTbutton" value="+" />
<input type="button" class="pt-button delPTbutton" value="-" />
</td>
<td class="pt-values">
<div>
<input type="text" class="vendor" placeholder="Vendor Name" />
</div>
<div>
<textarea class="ptCode" name="ptCode" placeholder="Pixel Tag Code" ></textarea>
</div>
<div class="page-select">
<select>
<option value="AllPages">All Pages</option>
<option value="HomePage">HomePage</option>
<option value="VehicleDetailsPage">VehicleDetailsPage</option>
<option value="VehicleSearchResults">VehicleSearchResults</option>
<option value="ContactUsForm">ContactUsForm</option>
</select>
</div>
<div class="area-checkboxes">
<p class="wheretosave">Where?</p>
<input type="checkbox" name="head" /><label for="head">Head</label>
<input type="checkbox" name="body" /><label for="body">Body</label>
</div>
<div class="save-pt">
<input value="SAVE" type="submit" />
</div>
</td>
</tr>
</table>
JavaScript:
// HIDES CURRENT PT & CHANGES TOGGLE BUTTON ICON WHEN CLICKED
$('.togPTbutton').click(function(){
$('.pt-values').slideToggle(25, function() {
if ($('.pt-values').is(':hidden')) {
$('input.togPTbutton').val('?');
}else{
$('input.togPTbutton').val('?');
}
});
});
$(document).ready(function() {
var table = $('.manage-pt'),
rows = $(table).find('tr'),
rowCount = $(rows).length,
addedRow = $(document.createElement('tr')),
addButton = $('.addPTbutton'),
removeButton = $('.delPTbutton');
function addRow(){
var thisRow = $(addedRow).clone(true);
$(thisRow).attr('class','.pt-entry-' + rowCount);
rowCount += 1;
$(thisRow).html('<td>row</td>');
$(table).append(thisRow);
}
function removeRow(){
var items = $(table).querySelectorAll('tr');
if (rowCount > 1) {
$(table).remove(items[rowCount - 1]);
rowCount -= 1;
}else{
alert('CANNOT DELETE LAST ROW');
}
}
addButton.click(function(e){
addRow();
});
removeButton.click(function(e){
removeRow();
});
});
devrait chercher près de quelque chose comme cette maquette ...
Cela fonctionne très bien, mais est: dernière capable d'être utilisé dans IE 8+? Je demande parce que je suis encore en train d'apprendre et j'ai eu quelques pseudo-sélecteurs là-dedans original, et quelqu'un m'a dit de les enlever parce que ce sont des sélecteurs CSS3 qui pourraient ne pas fonctionner sur tous les navigateurs. – bmoneruxui
Une autre chose que je viens de penser. Lorsque .pt-entry est cloné ou copié, tout sera à l'intérieur de cette nouvelle entrée. Donc je ne ciblerais pas le tr: dernier à supprimer. Je devrais cibler THIS comme dans le tr.pt-entry-x à supprimer. – bmoneruxui
J'ai ajouté une solution pour IE8 et plus qui n'utilise pas le sélecteur CSS ': last'. De plus, puisque vous clonez un nouveau 'tr' et ajoutez seulement ce tr lorsque vous ajoutez une ligne, supprimez juste le dernier tr devrait être bon, à moins que je ne manque quelque chose. – Tricky12