'这'引用了jQuery on()中错误的动态生成元素
'this' refers to wrong dynamically generated element in jQuery on()
作为动态表单的一部分,我有一个复选框字段,用于启用和禁用下一个输入字段(它们是一对,所以当您向表单添加新部分时,复选框和输入字段都会添加在一起)。
.form-element
.checkbox
= f.label :foo_bool_field do
= f.check_box :foo_bool_field, class: 'foo-bool-field-form-toggle'
.desc_foo_bool_field= "text describing field"
.input
= f.label :bar_input_field
= f.text_field :bar_input_field, disabled: f.object.foo_bool_field
并且都在CCD_ 1类块中。
这是执行禁用的代码
$('.form').on('change', '.foo-bool-field-form-toggle', function(e) {
// disabling code goes here
});
如果我添加一些这样的表单元素,然后单击文本"text-descriptingfoo_bool_field",它只启用/禁用第一个集合的输入表单。如果我在表单禁用代码上方抛出调试器并检查this
,那么this
总是返回第一个集合。如果我单击实际文本框□,它工作正常,禁用复选框并引用我实际点击的复选框的右侧this
有什么想法吗?我尝试了一些不同的东西(click
而不是change
等),但这一切都回到了一个事实,即当点击文本时,this
不是我点击的元素,我似乎无法克服这一点。
与大多数语言不同,javascript中的this
通常指代父调用对象,根据上下文的不同,它几乎可以是任何东西。
长话短说,试着在jQuery选择器中包装this
,如下所示:
$('.form').on('change', '.foo-bool-field-form-toggle', function(e) {
// disabling code goes here
$(this).whatever
});
基本上,.form
0将引用触发回调事件(即change
)的DOM元素,并将适用于click
或任何其他事件触发器。
相关文章:
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 动态代码中存在系统应用程序地址错误
- 动态创建的iframe中的window.onerror在lne 0处给出脚本错误
- 在动态crm 2011中,右键单击已完成活动的只读文本时,您是否出现错误
- django中动态形式的csrf令牌错误
- 动态创建的 jQuery UI 对话框错误后 jQuery 2.2.0 升级
- Angular2 - 动态组件加载器错误
- 在使用 javascript 动态添加行时,我正在增加索引值,但出现错误
- 给出动态数组时出现 jsTree 错误
- 从 json 动态获取数据时出现类型错误
- 用Javascript为QCM动态生成问题——未捕获类型错误
- '这'引用了jQuery on()中错误的动态生成元素
- 如何使用错误消息或成功消息动态更新我的跨度
- IE7/8中的jQuery动态元素错误
- 服务器间错误:php访问动态创建的元素数组
- 如果在transclusion之后添加,为什么指令下的动态元素具有错误的作用域
- SlickGrid根据日期错误动态构建列
- 动态谷歌图表的工具提示错误
- Javascript中的语法错误?(尝试动态加载 Facebook JavaScript SDK)
- j查询动态事件处理程序错误