在多选择器

时间:2017-09-28 16:10:52

标签: javascript jquery spring-boot jquery-selectors thymeleaf

我使用JQuery 1.11并希望对所有以partitions0.instances0.natures开头并以typeCle结尾的ID表示:id="partitions0.instances0.natures0.typeCle"。然后我将影响那些,与我选择的元素相同的值。但我的问题在于选择器。

我尝试了很多像​$('[id^='+instanceId'][id$=typesCle]')这样的内容,有或没有双引号,但现在找不到合适的答案。错误为Uncaught SyntaxError: Invalid or unexpected token

所有jquery代码:

var instanceId = $(this).attr("id");
var natureId = $(this).attr("id");
var valeur = $(this).prop('value');
natureId = natureId.replace("typesCle", "nature").replace(/\./g, '\\\\.');
​​$('[id^='+ natureId +'][id$=typesCle]').each(){
    this.val(valeur);
}

我还用变量值替换了变量来检查并且我输出了相同的错误消息:

​$('[id^=partitions0\\.instances0\\.nature][id$=typesCle]').each(){
    console.log(valeur);
    this.val(valeur);
}

html代码:

<div class="col-sm-6">
       <select th:field="*{partitions[__${rowPartitionStat.index}__].instances[__${rowInstanceStat.index}__].typesCle}" class="form-control modRepInstance">
         <option th:each="typeCle : ${allTypesCle}"
           th:value="${typeCle}" th:text="${typeCle}">...</option>
       </select>
</div>

1 个答案:

答案 0 :(得分:1)

稍微往复之后,似乎你不需要逃离点,只需要用一对双引号"围绕选择器。

您的原始代码实际上有第一个双引号,但在错误的位置,它的结束引号丢失,并且缺少+,因此语法错误。

总体而言,与原始代码的区别在于重新定位开头报价,添加结束报价并添加第二个+

组织:​'"[id^='+instanceId'][id$=typesCle]'
新:'[id^="'+ instanceId + '"][id$=typesCle]'

以下示例似乎有效。虽然您仍需要使用.each()来迭代所有匹配项。

&#13;
&#13;
var outerId = 'partitions0.instances0.nature';

$(document).ready(function() {
 var selector = '[id^="' + outerId + '"][id$=typesCle]';
 console.log(selector);
 
 var x = $(selector);
 console.log(x);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-sm-6">
  <select id="partitions0.instances0.nature.SomeUniqueValue.typesCle">
         <option value="Option1Value1" text="Option1Value1">Select1Option1Value1</option>
       </select>
  <select id="partitions0.instances0.nature.SomeOtherValue.typesCle">
         <option value="Option1Value1" text="Option1Value1">Select2Option1Value1</option>
       </select>
</div>
&#13;
&#13;
&#13;