我似乎无法在jQuery中的选择器中使用变量。这是一个非常简单但又烦人的bug!有关示例,请参阅此jsFiddle:
以下不起作用:
var folder_id = "folder";
$("#selects select[name='" + folder_id + "']").append('<span>Hi></span>');
标记:
<div id="selects">
<select name="folder_id">
<option>hey</option>
</select>
</div>
答案 0 :(得分:2)
回答你实际提出的问题(但也见下文):
您告诉它使用select
name
找到folder
,而不是folder_id
。但您的select
名称为folder_id
。
所以要么改变代码:
// v----- change here
var folder_id = "folder_id";
$("#selects select[name='" + folder_id + "']").append('<span>Hi></span>');
Updated fiddle(但同样,请参阅下面的休息时间)
... 或 更改标记:
<div id="selects">
<select name="folder">
<option>hey</option>
</select>
</div>
但请注意,您尝试将span
附加到select
,这是无效的标记,但无效。 select
elements不能包含spans
(仅option
和optgroup
个元素)。如果您打算在 select
之后,请使用after
:
// v--- change here
$("#selects select[name='" + folder_id + "']").after('<span>Hi></span>');
// also note the `>` you probably don't want here ----^
答案 1 :(得分:1)
它工作正常但你的folder_id错了所以它不匹配。
答案 2 :(得分:1)
var folder_id = "folder_id";
$("#selects select[name='" + folder_id + "']").append('<span>Hi</span>');
您的ID设置不正确,加上一些HTML在附加的范围内不正确。
答案 3 :(得分:1)
除了其他人的答案,这是正确的,为什么要在<span>
列表中添加<select>
?
如果您尝试添加新选项,肯定会添加这样的内容吗?
$("#selects select[name='" + folder_id + "']").append('<option>Hi</option>');
这会在选择列表中添加一个新选项,请参阅this小提琴。
或者,如果您尝试将文本添加到选项列表中,为什么不这样呢?
$("#selects select[name='" + folder_id + "'] option").append('<span>Hi</span>');
请参阅this小提琴。
答案 4 :(得分:0)
请参阅我更新的(工作)示例:
您的代码存在以下问题:
1 - 分配给folder_id
的值不正确
2 - 未附加<option>
标记用于附加值
更新的JavaScript是:
var folder_id = "folder_id";
$('#selects select[name="' + folder_id + '"]').append($('<option>Hi</option>'));