2013-06-25 52 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

我打開代碼,所以它現在只在