2016-06-03 1 views
0

je les DOM suivantes:remplaçons sélectionnez Attributs indexés avec regexp

<select id="evo_calculatorbundle_ruletype_assertions_0_logicalOperator">...</select> 
<select id="evo_calculatorbundle_ruletype_assertions_1_logicalOperator">...</select> 

avec le composant jQueryUI Sortable, je suis le tri de ces balises select. Après le tri, la sélection n ° 1 est placée avant la sélection n ° 0. Je voudrais ré-indexer ces sélections en fonction du nouveau DOM.

Voici mon triables instanciation:

// Sortable assertions 
$collectionHolder.sortable({ 
    placeholder: "ui-state-highlight", 
    handle: ".handle", 
    helper: "original", 
    cursor: "move", 
    update: function(event, ui) { 
     var elements = $collectionHolder.find("tr"); 
     var count = elements.length; 
     console.log(count); 

     $(elements).each(function(index) { 
      $(this).data('index', index).attr('data-index', index); 

      var pattern = '/_[0-9]+_/g'; 
      var replacement = '_' + index + '_'; 

      $(this).find('select').each(function(){ 
       var before = $(this).attr('id'); 
       var after = $(this).attr('id').replace(pattern, replacement); 
       console.log(before + " " + after); 

       $(this).attr('id', $(this).attr('id').replace(pattern, replacement)); 
       $(this).css('border', '3px solid black'); 
      }); 
     }); 
    } 
}); 

Le remplacement ne fonctionne pas, console.log(before + " " + after) imprime les suivantes:

evo_calculatorbundle_ruletype_assertions_1_logicalOperator evo_calculatorbundle_ruletype_assertions_1_logicalOperator 
evo_calculatorbundle_ruletype_assertions_0_logicalOperator evo_calculatorbundle_ruletype_assertions_0_logicalOperator 

et j'attendre

evo_calculatorbundle_ruletype_assertions_1_logicalOperator evo_calculatorbundle_ruletype_assertions_0_logicalOperator 
evo_calculatorbundle_ruletype_assertions_0_logicalOperator evo_calculatorbundle_ruletype_assertions_1_logicalOperator 

que je fais quelque chose problème avec replace fonction javascript? Ou mon modèle est faux?

Répondre

1

Le motif Regex en JavaScript est entouré de barres obliques, si vous l'enveloppez avec un guillemet simple, il devient une chaîne.

Utilisation:

var pattern = /_[0-9]+_/g; 
+0

fonctionne comme un charme. Je vous remercie. – VaN