JQuery Focus()不会被激活

时间:2014-03-06 17:16:56

标签: javascript jquery

新会员,但我一直在这里阅读和学习。我希望我已经正确地格式化了这个问题,但是这里是。这是我的问题的基础。我使用JQuery replaceWith交换下拉选择与输入框,反之亦然。似乎我影响了我的能力JQuery在swapped out id上设置focus()。这是代码(没有结束标记)。

表格                                              选择一个标志                         草坪标志                         横幅                         雕刻标志                         喷砂标志                                                           数量:                     

使用输入框交换下拉选项的JQuery,该输入框发生在newField上面显示的产品ID更改上,或者包含on或下列其他内容:

            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的上下文,因为无论我是否将选择下拉列表与输入框交换,id都是相同的。

由于

2 个答案:

答案 0 :(得分:0)

您应该使用.on()将事件绑定到动态创建的元素。尝试:

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

答案 1 :(得分:0)

你应该使用委托来动态创建对象

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