jquery在另一个事件处理程序中设置事件处理程序

时间:2015-07-17 07:17:35

标签: javascript jquery event-handling

我有一个包含大量图片和一个js图像编辑器的网站。我想做的就是在图像上双击以在编辑器中打开它,当我按下保存(我的按钮下面的编辑器生成图像数据URL)根据编辑器更新它。现在代码。

$("body").delegate("img",'dblclick', function(){
        var parent = $(this).parent()
        var input = parent.find("input[name$='-source']").first();
        var source = input.val();
        var self = $(this);

        $("#save_struct_button").on('click',function(){
            var self_this = $(this)
            //editor is the instance of image editor
            editor.saveImage(self,input);

        });  });

问题是当我第一次点击#save_struct_button时,一切正常,但第二次没有。似乎第一个onclick保持连接到按钮。 有什么建议锄头实现这个? 感谢

编辑:我的第二次尝试是返回这样的功能:

$("#save_struct_button").on('click',function(){
            var self_this = $(this);

            return function(self,input){
                editor.saveImage(self,input);
            }(self_this,input);*/


        });

但仍然没有运气:)。

1 个答案:

答案 0 :(得分:0)

您可以使用.off()删除以前的处理程序,但更好的选择是使用共享变量,如

INSERT INTO details (repo_phyid,
                     repo_type,
                     repo_attrname,
                     repo_attrvalue,
                     req_phyid,
                     req_type,
                     req_attrname,
                     req_attrvalue) 
SELECT     demo.phyid,
           'Complementary Item',
           'Product Management Responsible',
           demo.attr_value,
           tnr.phyid,
           'Complementary Item',
           req_attrname,
           demo.attr_value
FROM       repo_tnr tnr
JOIN       repo_tnr_tttribute demo ON tnr.phyid = demo.phyid
CROSS JOIN (SELECT '**Product Manager**' AS req_attrname FROM dual
            UNION ALL
            SELECT '**Quality Manager**' AS req_attrname FROM dual
            UNION ALL
            SELECT '**Depty Engineer**'  AS req_attrname FROM dual) t
WHERE      demo.attr_name = 'Product Management Responsible' AND
           tnr.type = 'Complementary Item'

如果您想继续使用您的结构,请使用.off(),如

var $imginput, $img;

$("body").delegate("img", 'dblclick', function () {
    var parent = $(this).parent()
    var $imginput = parent.find("input[name$='-source']").first();
    var source = $imginput.val();
    var $img = $(this);

});

$("#save_struct_button").on('click', function () {
    if (!$imginput) {
        return;
    }
    var self_this = $(this);
    //editor is the instance of image editor
    editor.saveImage(self, input);

});