2013-06-25 45 views
0

使用jQuery 1.9.1和jQuery Mobile 1.3jQuery更改事件不更新

我有一些克隆的表单元素,包括选择列表和文本输入。我需要文本输入的名称和ID属性来更改和反映选择列表中选定项目的值。这最初适用于第一组选择列表/文本输入,但不是当您再次更改选择列表时。它也不适用于克隆元素。

http://jsfiddle.net/mT4vw/

$(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中)?我喜欢这种方法,因为它禁用了选择列表中的任何先前选择的选项。谢谢。

+2

打开代码'$(function(){}'这相当于'.ready',它不应该与JQM一起使用,而且它会触发一次。 – Omar

回答

3

当然,它的行为如预期。您正在更改选择更改的ID,然后尝试使用旧的ID再次进行检索。插入你可以使用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"> 

,然后与类,这是不是你的情况不像一个变量选择它名称/编号

$(this).nextAll('.ui-input-search').find('.searchBox').attr({name:value, id:value}); 

Fiddle

+2

+1良好catch..proof http://jsfiddle.net/Palestinian/mT4vw/16/ – Omar

+1

@Omar感谢和你也很好的在原来的问题上的意见.. :) – PSL

+0

我打开代码,所以它现在只在