如何使用jquery调用事件调用div

时间:2012-05-15 13:57:00

标签: javascript jquery fancybox

我有几个div,当点击时打开一个带有文本字段的fancybox,它接收一条消息,然后保存表单。当我想重用它时,这不起作用,即对多个表单使用相同的函数和代码。它总是假装成第一个按钮。并且每次我使用它时运行回调函数的次数都会增加。有谁知道我做错了什么?我尝试添加each(),但没有帮助。

我很抱歉这个简短的解释,在查看代码时会更清楚(注意:我使用console.log作为输出):http://jsfiddle.net/EvYvc/11/

基本上:我不知道哪个元素调用了click函数并获得了它的属性。

2 个答案:

答案 0 :(得分:0)

我不是FancyForm插件的专家。但是我认为你是多次绑定click事件,因为你在beforeShow处理程序中绑定它。

尝试自己绑定click事件:

http://jsfiddle.net/h8sVY/

$(".reason_submit2").each(function() {
    $(this).fancybox({
        openEffect: 'none',
        closeEffect: 'none',
        'modal': true
    });
});

$(".fancyConfirm_ok").click(function() {
    $.fancybox.close();
    // etc...
});
​

答案 1 :(得分:0)

一些变化,

  1. 您需要在clickShow
  2. 之外绑定点击处理程序
  3. 我认为您无法确定在显示
  4. 之前点击了哪个reason_submit2链接

    或者,我为链接定义了2个var和一个点击处理程序,该处理程序将存储nameform,稍后将在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();
        });
    });
    

    DEMO

    其他技巧是在点击处理程序中为点击的链接添加一个类,并使用该类获取name内的formfancyConfirm_ok,但我个人觉得这样更好。< / p>