作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法将 Click 事件附加到包含 input
按钮的弹出表单。代码如下:
<a id="btnEditSummary" href=#>Edit Summary </a>
<div id="editSummary" class="hidden">
<input type=button id="btnEdit" value="Update" />
</div>
function openPoPup(clickHandle,contentHandle,width,height)
{
width = typeof a !== 'undefined' ? a : 600;
height = typeof b !== 'undefined' ? b : 300;
$.fancybox(
$(contentHandle).html(),
{
'width' : width,
'height' : height,
'minWidth' : width,
'minHeight' : height,
'autoScale' : true,
'transitionIn' : 'none',
'transitionOut' : 'none',
'hideOnContentClick': false,
'onStart': function () {
//On Start callback if needed
}
}
);
}
$("#btnEditSummary").click(function()
{
openPoPup('#btnEditSummary','#editSummary',300,300);
$( "#btnEdit" ).on( "click", function() {
alert( $( this ).text() );
});
}
$( "#btnEdit" ).on( "click", function() {
alert( $( this ).text() );
});
最佳答案
您的方法的问题在于,您实际上在 fancybox 中显示 #editSummary
选择器的克隆
,作为参数在openPoPup()
函数,以便将 click
事件绑定(bind)到文档流中的原始选择器,而不是绑定(bind)到克隆
在 fancybox 内。
作为解决方法,您可以使用 fancybox onComplete
回调(我假设您使用的是 v1.3.4,因为代码中的 API 选项)来绑定(bind) click
事件到 fancybox 内的元素 #btnEdit
,例如:
function openPoPup(clickHandle, contentHandle, width, height) {
width = typeof a !== 'undefined' ? a : 600;
height = typeof b !== 'undefined' ? b : 300;
$.fancybox($(contentHandle).html(), {
width: width,
height: height,
// minWidth: width, // not valid in v1.3.x but 2.x
// minHeight: height, // not valid in v1.3.x but 2.x
autoScale: true,
transitionIn: 'none',
transitionOut: 'none',
hideOnContentClick: false,
onStart: function () {
//On Start callback if needed
},
onComplete: function () {
// bind click event to element inside fancybox
$("#fancybox-content").on("click", "#btnEdit", function () {
alert("click event bound");
});
}
});
}
jQuery(document).ready(function ($) {
$("#btnEditSummary").click(function () {
openPoPup('#btnEditSummary', '#editSummary', 300, 300);
});
}); // ready
注意我在其委托(delegate)形式中使用.on()
:
$("#fancybox-content").on("click", "#btnEdit", function (){ ... });
参见JSFIDDLE
关于javascript - 如何在弹出的 fancybox 上使用按钮附加 Click 事件>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473346/
我是一名优秀的程序员,十分优秀!