简体   繁体   English

使Jquery UI元素更具可重用性

[英]Making Jquery UI element more reusable

New to OOP. OOP新手。 I currently use the jQuery UI Dialog for both signup and login forms. 我目前使用jQuery UI对话框进行注册和登录表单。 However I violate DRY by assigning properties each time I use the dialog. 但是,每次使用对话框时,我都会通过分配属性来违反DRY。 I'm trying to figure out what the best approach is to reusing this element. 我试图弄清楚重用这个元素的最佳方法是什么。

 signUpDialog = $('.js-sign-up-dialog').dialog({
    autoOpen: false,
    height: 300,
    width: 350,
    open: function(event, ui) { $(".ui-dialog-titlebar-close", ui.dialog || ui).hide(); }
  });

  // dialog for login
   loginDialog = $('.js-login-dialog').dialog({
    autoOpen: false,
    height: 300,
    width: 350,
    open: function(event, ui) { $(".ui-dialog-titlebar-close", ui.dialog || ui).hide(); }
  });

  // event hunder for click on sign-up button
  $(document).on('click','.js-join-button', function() {
    event.preventDefault ? event.preventDefault() : event.returnValue = false;
    signUpDialog.dialog('open');
  });

  // event hunder for click on log-in button
  $(document).on('click','.js-login-button', function() {
    event.preventDefault ? event.preventDefault() : event.returnValue = false;
    loginDialog.dialog('open');
  });
};

Create an object that holds all of the arguments for the .dialog function and pas the object in. 创建一个包含.dialog函数的所有参数并将对象.dialog的对象。

var dialogParamObj = {
    autoOpen: false,
    height: 300,
    width: 350,
    open: function(event, ui) {
        $(".ui-dialog-titlebar-close", ui.dialog || ui).hide();
    }
};

signUpDialog = $('.js-sign-up-dialog').dialog(dialogParamObj);

loginDialog = $('.js-login-dialog').dialog(dialogParamObj);

Note: you should probably put var in front of signUpDialog and loginDialog like this: 注意:您应该将var放在signUpDialogloginDialog如下所示:

var signUpDialog = $('.js-sign-up-dialog').dialog(dialogParamObj);

var loginDialog = $('.js-login-dialog').dialog(dialogParamObj);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM