2014-03-06 32 views
0

新成員,但我一直在這裏閱讀和學習一下。我希望我已經正確地格式化了這個問題,但是這裏有,這裏是我的問題的基礎知識,我使用JQuery replaceWith將下拉選擇與輸入框交換,反之亦然。 jQuery來設置焦點()在換出ID下面的代碼(沒有關閉標籤)JQuery Focus()未開火

對於形式 選擇A登錄 草坪跡象 橫幅 雕刻跡象 噴砂跡象 數量:。

該交換的下降與發生在上述新野中所示的產品ID的變化或者包含在輸入框向下選擇JQuery的或其它下面的:

  newField = "<select id='quantity' name='quantity'><option selected value='10'>10</option><option value='20'>20</option><option value='30'>30</option><option value='40'>40</option>option value='50'>50</option><option value='60'>60</option><option value='70'>70</option><option value='80'>80</option><option value='90'>90</option><option value='100'>100</option></select>"; 

      newField = "<input id='quantity' name='quantity' maxlength='2' size='2' \>" 

和JQuery的replaceWith(),這將根據另一個選擇下拉框替換上述兩個字段之一。

 $('#quantity').replaceWith($(newField)).attr("id", "quantity"); 

這一切工作得很好,除了互換工作的偉大,當我做了以下(我的測試代碼),沒有任何反應。當我將注意力集中到輸入框時,不會觸發警報。

$('#quantity').focus(function(){ 
    alert ("focused"); 
}); 

我使用replaceWith()失去一些上下文上的標識與交換空間,因爲該ID是一樣的,不管我是否換一個選擇下拉加上一個輸入框。

感謝

+0

可能重複[事件綁定的動態創建的元素嗎?](http://stackoverflow.com/questions/203198/event- binding-on-dynamic-created-elements) – Barmar

回答

0

您應該使用.on()事件綁定動態創建的元素。嘗試:

$(document).on('focus','#quantity',function(){ 
    alert ("focused"); 
}); 
+0

這很好用。非常感謝你。創建對象時,我沒有看到它是動態的,因此沒有附加事件。附加事件的伎倆。我一直在學習JQuery很短的時間,所以實現的細微差別得到了我。 – user3388569

0

你應該使用deligates用於動態創建的對象

$(document).on("focus","#quantity",function(){ 
alert ("focused"); 
}); 
+0

如果在''內部執行,這將不起作用,並且您有語法錯誤 – Ian

+0

@Ian我編輯了答案 –

+0

這將起作用。我確實使用.on()來創建事件綁定,並且它完美地工作。我不知道.on()不提供委託是否有好處?謝謝Anoop。 – user3388569