2016-08-12 6 views
2

Einfaches Problem. Ich habe eine js-Variable, die ich auch innerhalb eines jQuery-Selektors verketten möchte. Es funktioniert jedoch nicht. Es tauchen auch keine Fehler auf. Was ist falsch? Wie verknüpfe ich eine Variable korrekt mit einem Text in einem jQuery-Selektor?Verketten in jQuery Selector

<select class="form-control" name="taille" id="{{Product.id~'/taille'}}"> 
<option>Taille</option> 
<option>1</option> 
<option>2</option> 
</select> 

und in jquery diesen Code verwendet für für ausgewählte wählen

$('select[name="taille"]').focusin(function(){ 
    var idElement = $(this).attr('id'); 
    var arr = idElement.split('/'); 

die ID zu erhalten und es ist Arbeit sehr gut, aber das Problem wan i für Option anhängen ausgewählt select von id ich viele Code versuchen und kein eine Arbeit für zB:

$('#'+arr[0]+'/taille') 
    .find('option') 
    .remove() 
    .end() 
    .append('<option value="whatever">text</option>') 
    .val('whatever') 
; 

Bitte helfen und danke.

+0

Verwenden '$ ('wählen Sie [name = "taille"]'). Html (' ') .val (' was auch immer')' – Tushar

Antwort

4

Verwenden Sie ein attribute equals selector

$('[id="' + arr[0] + '/taille"]') 


Oder benötigen Sie den Meta-Zeichen ( /) mit \\ zu entkommen.

$('#' + arr[0] + '\\/taille') 

prüfen documentation of jQuery selectors:

Um eine der Meta-Zeichen (wie !"#$%&'()*+,./:;<=>[email protected][\]^``{|}~) als wörtliche Teil eines Namens zu verwenden, muss es mit zwei Schrägstriche entwertet werden: \\ . Zum Beispiel kann ein Element mit id="foo.bar" den Selektor $("#foo\\.bar") verwenden. Die W3C CSS-Spezifikation enthält die complete set of rules regarding valid CSS selectors. Hilfreich ist auch der Blogeintrag von Mathias Bynens unter CSS character escape sequences for identifiers.


Ich glaube, Sie versuchen, das gleiche Element mit eigenen id zu bekommen. Wenn yes dann gibt es keine Notwendigkeit, this zu verwenden, die das gleiche Element beziehen. Auch wenn es nicht notwendig ist, das Programm zu entfernen und erneut anzuhängen, verwenden Sie einfach html(), was das vorhandene entfernen wird.

$('select[name="taille"]').focusin(function(){ 
    $(this).html('<option value="whatever" selected>text</option>'); 
}); 
+0

Wie gesagt in meinem antworte '.find ('option') .remove() .end() .append' ==>' .html() '. – Tushar