不需要时隐藏按钮

时间:2010-08-10 05:04:04

标签: jquery html

我在页面中使用Jquery来隐藏我不想显示的按钮,除非需要。在这种情况下,它有一个有几行的表我隐藏删除按钮,除非我选择要删除的行...同样我隐藏控制行操作的按钮,直到有多行。我使用以下代码。

jQuery(document).ready(function() {
                if (jQuery(tableId).find("input[type='checkbox']").length == 1) {
                    jQuery(headerCheckbox).hide();
                    jQuery(removeButtonId).hide();
                    jQuery(upButtonId).hide();
                    jQuery(downButtonId).hide();
                } else if (jQuery(tableId).find("input[type=checkbox]:checked").length == 0) {
                    jQuery(removeButtonId).hide();
                    jQuery(upButtonId).hide();
                    jQuery(downButtonId).hide();
                    jQuery(headerCheckbox).click(function() {
                        jQuery(tableId).find("input[type='checkbox']").attr('checked', jQuery(headerCheckbox).is(':checked'));
                    });
                }

                jQuery(tableId).find("input[type='checkbox']").each(function() {
                    if (jQuery(this).attr('id') != headerCheckbox) {
                        jQuery(this).click(function() {
                            if (jQuery(headerCheckbox).is(':checked')) {
                                if (jQuery(tableId).find("input[type=checkbox]:checked").length != 1) {
                                    jQuery(removeButtonId).show();
                                    if (rowCount > 1) {
                                        jQuery(upButtonId).show();
                                        jQuery(downButtonId).show();
                                }
                            } else if (jQuery(tableId).find("input[type=checkbox]:checked").length > 0) {
                                jQuery(removeButtonId).show();
                                if (rowCount > 1) {
                                    jQuery(upButtonId).show();
                                    jQuery(downButtonId).show();
                                }
                            } else {
                                jQuery(removeButtonId).hide();
                                jQuery(upButtonId).hide();
                                jQuery(downButtonId).hide();
                            }
                        }
                    });
                    }
                });
            });

这段代码没有

if (rowCount > 1) {
                                jQuery(upButtonId).show();
                                jQuery(downButtonId).show();
                            }

适用于删除按钮,但是当我添加此行时,行为会变得混乱,只有在选择了全部选项时才有效...

为了解释所使用的变量,大多数只是ID来自那里的相应元素...除了rowcount,这是一个由其他代码生成的数字...我在chrome(Firebug)中检查并且数字生成正确。但是,当我点击选择所有其他时间它不起作用时,代码似乎仍然有效,而且当未选择时隐藏不再有效,...我哪里出错了?

1 个答案:

答案 0 :(得分:1)

我认为你在第一个if(rowCount> 1)上缺少一个右括号,它应该是这样的:

jQuery(tableId).find("input[type='checkbox']").each(function() {
                    if (jQuery(this).attr('id') != headerCheckbox) {
                        jQuery(this).click(function() {
                            if (jQuery(headerCheckbox).is(':checked')) {
                                if (jQuery(tableId).find("input[type=checkbox]:checked").length != 1) {
                                    jQuery(removeButtonId).show();
                                    if (rowCount > 1) {
                                        jQuery(upButtonId).show();
                                        jQuery(downButtonId).show();
                                    }  // <----This one was missing
                                }
                            } else if (jQuery(tableId).find("input[type=checkbox]:checked").length > 0) {
                                jQuery(removeButtonId).show();
                                if (rowCount > 1) {
                                    jQuery(upButtonId).show();
                                    jQuery(downButtonId).show();
                                }
                            } else {
                                jQuery(removeButtonId).hide();
                                jQuery(upButtonId).hide();
                                jQuery(downButtonId).hide();
                            }
                        }
                    });
                    }
                });

那个缺失的大括号肯定会引起一些奇怪的问题。