用于保存用户操作中的值的JavaScript机制
我已经创建了一个JavaScript对象,用于保存一个由用户在数据库中检查checbox所设置的值 我对jQuery和JavaScript编程“正确的方式”比较陌生,我希望确保下面捕获用户检查操作的机制是JavaScript的最佳实践。此外,由于我使用jQuery,有没有一种更简单的方法来保持我应该使用的操作用于保存用户操作中的值的JavaScript机制,javascript,jquery,colorbox,javascript-objects,Javascript,Jquery,Colorbox,Javascript Objects,我已经创建了一个JavaScript对象,用于保存一个由用户在数据库中检查checbox所设置的值 我对jQuery和JavaScript编程“正确的方式”比较陌生,我希望确保下面捕获用户检查操作的机制是JavaScript的最佳实践。此外,由于我使用jQuery,有没有一种更简单的方法来保持我应该使用的操作 function Check() { this.Checked = false; } obj = new Check; $(document).ready(function()
function Check() {
this.Checked = false;
}
obj = new Check;
$(document).ready(function() {
$('.cboxelement').colorbox({ html: '<input id="inactivate" type="checkbox" name="inactivatemachine"> <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();
});
}
});
});
函数检查(){
这个.Checked=false;
}
obj=新支票;
$(文档).ready(函数(){
$('.cboxelement').colorbox({html:'Inactivate Machine'});
$(document).bind('cbox_cleanup',function(){
obj.Checked=$.fn.colorbox.getContent().children(“#停用”).is(“:Checked”);
});
$(document).bind('cbox_closed',function(){
if($($.fn.colorbox.element()).attr('id').match('Remove')&&obj.Checked){
var行=$($.fn.colorbox.element()).parents('tr');
行淡出(1000,函数(){
row.remove();
});
}
});
});
是冗余的$($.fn.colorbox.element())
已经是jquery元素$.fn.colorbox.element()
- 通常(至少在我观看的示例中)在引用jquery元素的变量前面加上
。$
因此,
立即给出了它正在引用jquery元素的想法var$rows=$.fn.colorbox.element().parents('tr')
- 我担心,
对IE6中的行不起作用(如果我没有记错的话)。在删除fadeOut
之前,您应该能够隐藏中的所有内容
我不知道colorbox的最佳用途,因此无法帮助您进行“简化”操作。您可以在闭包中捕获引用,这样可以避免全局数据,并且更容易进行多次检查。但是,在本例中,它似乎绑定到单个colorbox,因此我不知道是否可以使用多个实例
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.
就我个人而言,我会使用jQuery的内置
data()
方法将值直接附加到对象上。我并不完全确定您想要做什么,但是,例如,您可以将值附加到DOM中的“名称空间”,以便稍后使用
$('body').data('colorbox.checked',true);
随后,您将通过以下方式检索该值:
var isChecked = $('body').data('colorbox.checked');
您可以在任何jquery对象上运行
data()
方法。我认为这是jQuery的最佳实践。不幸的是,$.fn.colorbox.element()不会返回jQuery元素,但会在下一版本中返回。我将查看IE6中的淡出功能,谢谢您的提醒。我最担心的是使用自定义Check()对象来捕获用户的操作。从技术上讲,这将是“预先添加$
”ColorBox动态呈现其内容,因此每页只有on。我需要阅读更多关于闭包的内容,但这似乎比运行全局变量要干净得多。我不知道jQuery的data()
方法。鉴于颜色盒的性质,它似乎最适合我的特殊用途。在将值附加到“名称空间”时,有什么指导吗?@ahsteele:嗯,“名称空间”实际上是基于字符串的(因此在我的回答中用引号括起来)。基本上,您正在向对象添加一个键->值对。类似于(仅用于演示目的):document.body.data['colorbox.checked']=true
。这样,其他插件就不会意外地覆盖您的键->值对(使用“checked”这样的通用变量是很有可能的)。您也可以合法地这样做:$('body').data('colorbox\u checked',true)
。而不是点符号。就像我说的,它是“名称空间”。祝你好运