.focus()不能处理克隆对象?

时间:2014-06-18 09:29:42

标签: javascript jquery

希望你们都做得很好!

所以我有一个包含连续输入文本列表的表单。表单可以包含尽可能多的行,因为有一个“添加行”按钮,允许用户动态添加

我使用clone()来实现这个'添加行'功能,并且它正常运行

接下来,如果选中相应的复选框,则只能编辑行中的每个输入

我把代码放在小提琴上:FIDDLE DEMO

现在,当选中复选框时,我们直接将焦点放在第一个输入(我定义输入类='first'),一旦填充此输入,它就会直接聚焦到下一个输入。并且它工作正常,除了:如果我添加新行,焦点功能不再起作用。

我的焦点功能是:

 $("input").keyup(function (event) {
        if ($(this).val() != "") {
            $(this).next('input').focus();
            if ($(this).next('input[type="text"]').val() == "X") {
                $(this).closest('.me').find('input').focus();

            }
        }
    });
那应该是这样吗?或者我需要添加到脚本中吗?

谢谢!

1 个答案:

答案 0 :(得分:5)

使用clone(true)代替clone()

代码

 var new_line = $('#content div.2dtme:last').clone(true).append();

DEMO

或者

您需要使用Event Delegation。您必须使用委托事件方法来使用.on()

事件处理程序仅绑定到当前选定的元素;它们必须存在于您的代码进行事件绑定调用时的页面上。

$(document).on('event','selector',callback_function)

实施例

$('form').on('keyup', 'input', function (event) {
    //Your code
});

而不是

$("input").keyup(function (event) {
    //Your code
});

DEMO