在jQuery Selector中连接

时间:2016-08-12 11:04:12

标签: javascript jquery

简单的问题。我有一个js变量我想在jQuery选择器中连接。但它不起作用。也没有出现任何错误。怎么了?如何在jQuery选择器中正确地将变量连接到某些文本。

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

和在jquery中使用此代码获取所选select

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

并且它的工作非常好,但问题是我要为id选择选择附加选项我尝试了很多代码而没有人为例子工作:

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

请帮助和谢谢。

1 个答案:

答案 0 :(得分:4)

使用attribute equals selector

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

<小时/> 或者您需要使用/转义元字符(\\)。

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

检查documentation of jQuery selectors

  

要使用任何元字符(例如!"#$%&'()*+,./:;<=>?@[\]^``{|}~)作为名称的文字部分,必须使用两个反斜杠进行转义:\\。例如,具有id="foo.bar"的元素可以使用选择器$("#foo\\.bar")。 W3C CSS规范包含complete set of rules regarding valid CSS selectors。同样有用的是Mathias Bynens在CSS character escape sequences for identifiers上的博客文章。

我认为您正在尝试使用自己的id来获取相同的元素。如果yes则不需要使用引用相同元素的this。虽然无需再次删除和追加,但只需使用 html() 即可删除现有内容。

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