使用jQuery 1.9.1和jQuery Mobile 1.3
我有一些克隆的表单元素,包括选择列表和文本输入。我需要文本输入的名称和id属性来更改并反映在选择列表中选择的项目的值。这最初适用于第一组选择列表/文本输入,但不会再次更改选择列表。它也不适用于克隆元素。
$(function(){
$('form').on('change', '.mySelect', function(){
var value = $(this).val();
$(this).nextAll('.ui-input-search').find('#search').attr({name:value, id:value});
});
});
还试过这个:
$(function(){
$('.mySelect').on('change', function(){
var value = $(this).val();
$('.mySelect').each(function(){
$(this).nextAll('.ui-input-search').find('#search').attr({name:value, id:value});
});
});
});
总而言之,每次切换选择列表时,我都需要完成这项工作,只需要下一个文本输入。我需要这个来处理初始选择列表/文本输入以及克隆实例。有没有比克隆更好的方法(代码在jsfiddle中)?我喜欢这种方法,因为它禁用了选择列表中任何以前选择的选项。谢谢。
答案 0 :(得分:3)
当然,它的行为与预期一致。您正在更改选择更改时的ID,然后在下一次更改时尝试使用从不存在的旧ID进行检索。 Insetad你可以使用className或在选择器中使用data-type=search
。
像这样:
$(this).nextAll('.ui-input-search').find('[data-type=search]').attr({name:value, id:value});
或者:
更改标记以添加一个类searchBox
:
<input type="search" name="" id="search" class="inline searchBox" value="" placeholder="Search" data-theme="d" data-inline="true">
然后选择那个类,这个类在你的情况下不是变量,而不像名字/ id
$(this).nextAll('.ui-input-search').find('.searchBox').attr({name:value, id:value});
<强> Fiddle 强>