J'ai quelques pointeurs pour faciliter l'écriture et améliorer votre code existant. Tout d'abord, les lignes 1 à 4 continuent à sélectionner l'élément souhaité, ce qui signifie plus de traversées de DOM, ce qui est plus lent. Toutes les méthodes jQuery retour l'instance de l'élément (s), de sorte que vous pouvez « chaîne » méthode appelle comme ceci:
$("#"+div_id).attr('contentEditable', true)
.css('color','#F00')
.css('cursor','Text');
Note: La ligne casse ici sont insignifiants.
En second lieu, les sélecteurs de la forme #myId
fonctionnent généralement mieux que les sélecteurs de forme tagnam#myId
, la raison étant la première directement à tracera document.getElementById
alors que le second utilisera document.getElementsByTagName
et ensuite en boucle sur eux pour trouver celui avec l'id.
Donc, revenons à votre question initiale. Ma suggestion consiste simplement à ajouter une classe CSS à votre élément sélectionné, plutôt que de définir des styles en ligne avec l'appel à .css()
. Ensuite, il n'est pas nécessaire de stocker votre élément précédent dans un champ caché comme vous l'avez suggéré. Au lieu de cela, vous pouvez simplement sélectionner les balises div
qui ont votre classe sélectionnée. La clé ici est que votre élément précédent, le cas échéant, aura toujours la classe CSS que vous ajoutez.
Voici un exemple de ce que je veux en venir:
function edit_addon(div_id)
{
//step 1 - find your old element and clear the CSS
$('div.selected').removeClass('selected');
//step 2 - now, modify the div_id element
$("#"+div_id).attr('contentEditable', true)
.addClass('selected');
}
jslint.com -> "Problème à la ligne 3 caractère 22: point-virgule manquant." –