我已经创建了一个JavaScript目的举行一个价值由用户设置的检查checbox在 颜色框.

我是相对较新的以能力和编程JavaScript"正确的方式",并想要确保以下机构,用于拍摄的用户 检查行动 是一个最佳做法JavaScript一般。此外,由于我雇用,这是没有一个简单的方法,以保住他们的行动,我应该利用?

function Check() {
    this.Checked = false;
}

obj = new Check;

$(document).ready(function() {
    $('.cboxelement').colorbox({ html: '<input id="inactivate" type="checkbox" name="inactivatemachine">&nbsp;<label for="inactivate">Inactivate Machine</label>' });

    $(document).bind('cbox_cleanup', function() {
        obj.Checked = $.fn.colorbox.getContent().children('#inactivate').is(':checked');
    });

    $(document).bind('cbox_closed', function() {
        if ($($.fn.colorbox.element()).attr('id').match('Remove') && obj.Checked) {
            var row = $($.fn.colorbox.element()).parents('tr');
            row.fadeOut(1000, function() {
                row.remove();
            });
        }
    });
});
有帮助吗?

解决方案

个人而言,我的值(一个或多个)附接至直接使用jQuery的内置data()方法的对象。我真的不完全知道你正在尝试做的,但你可以,例如,附加价值在DOM以备后用一个“命名空间”。

$('body').data('colorbox.checked',true);

然后你会被后来的检索值:

var isChecked = $('body').data('colorbox.checked');

您运行任何jquery对象上data()方法。我会说这是最好的做法尽可能的jQuery去。

其他提示

您可以捕捉的关闭,避免了全球性数据,并使其更容易有多个检查的参考。然而,在这种情况下,它似乎被绑定到单一颜色框,所以我不知道,你可以有效地有多个实例。

function Check() {
    this.Checked = false;

    var obj = this; // 'this' doesn't get preserved in closures

    $(document).ready(function() {
       ... as before
    )};
}

var check = new Check; // Still need to store a reference somewhere.
  • $($.fn.colorbox.element()) 是多余的。 $.fn.colorbox.element() 已经是一个jquery元。

  • 这是共同使用(例中我看到,至少)在前面加一个 $ 变量引用jquery的要素。
    所以, var $rows = $.fn.colorbox.element().parents('tr'); 提供即时的想法,这是引用jquery件(s)。

  • 我害怕 fadeOut 不会的工作中的行IE6(如果我记忆正确的).你应该能隐藏所有内容 <tr> 之前去除它。

可以帮不在"简化"事情,因为我不知道彩盒最好的使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top