我有几个div,当点击时打开一个带有文本字段的fancybox,它接收一条消息,然后保存表单。当我想重用它时,这不起作用,即对多个表单使用相同的函数和代码。它总是假装成第一个按钮。并且每次我使用它时运行回调函数的次数都会增加。有谁知道我做错了什么?我尝试添加each(),但没有帮助。
我很抱歉这个简短的解释,在查看代码时会更清楚(注意:我使用console.log作为输出):http://jsfiddle.net/EvYvc/11/
基本上:我不知道哪个元素调用了click函数并获得了它的属性。
答案 0 :(得分:0)
我不是FancyForm插件的专家。但是我认为你是多次绑定click事件,因为你在beforeShow
处理程序中绑定它。
尝试自己绑定click事件:
$(".reason_submit2").each(function() {
$(this).fancybox({
openEffect: 'none',
closeEffect: 'none',
'modal': true
});
});
$(".fancyConfirm_ok").click(function() {
$.fancybox.close();
// etc...
});
答案 1 :(得分:0)
一些变化,
reason_submit2
链接
醇>
或者,我为链接定义了2个var和一个点击处理程序,该处理程序将存储name
和form
,稍后将在fancyConfirm_ok
中使用
完整代码:
$(function() {
var r2sName = '', r2sForm = '';
$(".reason_submit2").fancybox({
openEffect: 'none',
closeEffect: 'none',
'modal': true
}).click(function () {
var $this = $(this);
r2sName = $this.data("name");
r2sForm = $this.data("form");
});
jQuery(".fancyConfirm_ok").click(function() {
$.fancybox.close();
console.log('form : ' + r2sForm);
console.log('name : ' + r2sName);
console.log('message : ' + $("[name=reason2]").val());
$($(".reason_submit2").data("form")).append($("<input>").attr("type", "hidden").attr("name", "reason").val($("#reason").val()));
$($(".reason_submit2").data("form")).append($("<input>").attr("type", "hidden").attr("name", $(".reason_submit2").data("name")));
//document.forms[$(".reason_submit2").data("form")].submit();
});
});
其他技巧是在点击处理程序中为点击的链接添加一个类,并使用该类获取name
内的form
和fancyConfirm_ok
,但我个人觉得这样更好。< / p>