DevExpress (JS / HTML) 将事件附加到弹出窗口中的元素
DevExpress (JS / HTML) Attach Events to Elements in a Popup
如何正确地将事件附加到弹出窗口中的元素?
这就是我目前的做法:
.HTML
<div id="userDetail">
<input id="checkbox" type="checkbox" />
<div id="button-confirm"></div>
</div>
JavaScript
var userDetail = $("#userDetail").dxPopup({
width: '550',
height: 'auto',
showTitle: true,
title: "Setup Import Template",
visible: false,
onShown: function () {
$('#checkbox').one('click', function () {
$('.template-view').toggle();
});
$("#button-confirm").dxButton({
onClick: function (e) {
e.jQueryEvent.preventDefault();
templateDataPopup.hide();
}
});
}
}).dxPopup('instance');
这样做的问题是:
- 每次显示弹出窗口时,jQuery 都会将新的点击事件附加到
#checkbox
元素,我使用.one()
后的事件。 -
#button-confirm
元素的单击事件未附加两次。这是我想要的行为(虽然这不是我所期望的,但我认为是因为它是一个 DevExpress 实例)。 - 在初始化弹出窗口之前,我尝试将事件附加到弹出窗口中的元素,但由于某种原因,在弹出窗口显示后,元素的事件都不起作用。
那么,如何将事件正确附加到弹出窗口中的元素?
谢谢!
我从DevExpress支持那里得到了答案,建议使用contentTemplate
。答复:
使用 contentTemplate 属性创建弹出内容并添加 所需的事件:
contentTemplate: function (contentElement) {
contentElement.append('<input id="checkbox" type="checkbox" />');
var hideButton = $("<div id='button-confirm'>").dxButton({
text: "Hide popup",
onClick: function (e) {
popupInstance.hide();
}
});
contentElement.append(hideButton);
}
因此,建议不要通过onShown
事件附加事件,而是在 contentTemplate
中附加。
您还可以从 HTML 标记加载弹出内容contentTemplate
相关文章:
- Javascript更新孙窗口中的表单元素
- 如何在浏览器窗口变大/变小时捕捉元素的宽度
- 从html锚元素传递窗口对象
- 可以在调整窗口大小时重新调整stellar.js的元素偏移量
- Chrome应用程序在全屏中创建新窗口-html元素不是全高的
- 我需要帮助弄清楚一旦窗口的垂直高度被滚动,如何切换一个元素
- 将jquery ui窗口的父元素设置为另一个元素
- 如何获得一个进度元素,它被设置为在窗口调整大小时调整大小
- 使用JavaScript更改带有窗口高度的元素样式
- 如何将剑道UI窗口与页面上的另一个元素对齐
- 滚动窗口内的一个元素,该窗口具有滚动条
- Chrome应用程序:如何更新在Chrome应用程序主窗口中创建的辅助窗口元素的内容
- 如何在启动之前引用javascript窗口元素
- 在移动屏幕中从纵向移动到横向并返回纵向时,窗口元素在垂直方向上变得不可见
- 当移动方向从横向更改为纵向时,窗口元素不适合窗口
- 难以将事件处理程序附加到动态生成的模式窗口元素
- JavaScript窗口.元素没有定义,如果主机名在IE上没有'为什么
- 如何将元素值从父窗口发送到子层窗口元素
- AngularJS:在鼠标点击外部时关闭下拉/弹出窗口元素的正确方法是什么?
- 从iframe访问父窗口元素