在我的脚本中,我想确保一旦加载了标记,该网站就会更改下拉菜单中的值。但是,不起作用的是,该站点仅对页面上的最后一个下拉菜单执行操作。
使用的图书馆:
这是我的jquery代码:
$('[name^=tagsquiz]').on('itemAddedOnInit', function(event) {
tags = $(this).val();
idtags = $(this).prop('id').substr(13);
$.ajax({
type: 'POST',
url: 'tags/select',
data: {
'tags': tags
},
success: function(array) {
var html = '';
var count = 1;
$('#noqid_' + idtags).empty();
$.each(JSON.parse(array), function(i, ob) {
$.each(ob, function(ind, obj) {
html += '<option value="' + count + '">' + (count++) + '</option>';
});
});
$('#noqid_' + idtags).html(html);
$('#noqid_' + idtags).selectpicker('refresh');
}
});
});
&#13;
<div class="row">
<div class="col-md-4">
<div class="form-group label-floating">
<label class="control-label">Tags</label> <input class="tagsinput" data-color="rose" data-role="tagsinput" id="tagsfilterid_1" name="tagsquiz[]" type="text" value="test">
</div>
</div>
<div class="col-md-4">
<div class="form-group label-floating">
<label class="control-label">Select</label> <select class="selectpicker" data-none-selected-text="NO RESULT" data-size="7" data-style="select-with-transition" id="noqid_1" name="noq[]">
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="form-group label-floating">
<label class="control-label">Tags</label> <input class="tagsinput" data-color="rose" data-role="tagsinput" id="tagsfilterid_add" name="tagsquiz[]" type="text" value="second test, wow">
</div>
</div>
<div class="col-md-4">
<div class="form-group label-floating">
<label class="control-label">Select</label> <select class="selectpicker" data-none-selected-text="NO RESULT" data-size="7" data-style="select-with-transition" id="noqid_add" name="noq[]">
</select>
</div>
</div>
</div>
&#13;
ajax后接收示例数组:
{"questions":{"0":{"qid":"48"},"2":{"qid":"50"}}}
祝你好运
答案 0 :(得分:0)
我不熟悉这个小部件,但我怀疑你的问题在这里:
idtags = $(this).prop('id').substr(13);
$(this)
返回的jQuery集合中有多少个元素?你的itemAddedOnInit
函数执行了多少次?如果不止一次,每次idtags
的值是否不同?
jQuery prop()
method返回“匹配元素集中第一个元素的属性值。”无论如何,我怀疑idtags
只有一个值,而且这一行......
$('#noqid_' + idtags)
只匹配一个元素。
问题似乎源于未在以下行中使用var
关键字...
tags = $(this).val();
idtags = $(this).prop('id').substr(13);
省略var
会使它们成为全局变量,因此itemAddedOnInit
的两个执行都会共享它们。
答案 1 :(得分:0)
这是因为您的所有标签都具有相同的属性。你必须使用JQuery的每个函数,
的 $('.control-label').each(function(){
// Your code here
});
强>