【发布时间】:2017-06-07 15:03:41
【问题描述】:
我正在使用 Jquery Mobile 并且遇到需要我以编程方式创建一些表单字段(选择、输入等)的情况,如下所示:
$fieldInput = $('<input type="text" name="' + fieldName + '" />');
这完全可以正常工作,并且 Jquery 可以按预期设置输入样式。当必须重新创建表单时,问题就来了。然后,我首先使用 Jquery 的 .empty() 方法“清空”包含 div 元素,然后像上面一样继续创建表单元素。
问题在于,在第一次之后,所有后续创建表单元素的尝试都会导致 Jquery Mobile 无法设置元素的样式。我很聪明地发现这是因为我正在尝试创建一个元素,就 Jquery 而言,它实际上已经存在并且它变得混乱。但是,我不够聪明,不知道该怎么做......我想我需要在再次创建元素之前以某种方式“取消注册”元素,但我不知道如何。
我都试过了
$fieldInput.trigger('refresh');
和
$fieldInput.trigger('create');
对元素无济于事。我可以去重写我的代码的漫长过程,以便元素只在开始时创建一次,并在必要时简单地重置,但由于我不会进入的原因,这会使事情变得更加复杂。
我怎样才能重新创建相同的表单元素(相同的名称,没有 ID)并且仍然让 Jquery Mobile 做这件事?如何“取消注册”一个 Jquery Mobile 元素?
【问题讨论】:
-
如果您像
$fieldInput = $('<input type="text" name="' + fieldName + '" />');那样“缓存”您的 jquery 选择器,您是否在清空包含的 div 后将变量设置为 null?即$fieldInput = null;如果不是,则引用可能会阻止元素被完全删除,这可能会弄乱 jQuery Mobile。
标签: javascript jquery jquery-mobile