用选定的表行改变页面的功能很奇怪

时间:2012-07-02 20:11:38

标签: jquery jquery-ui

我正在使用下面的函数来检查基于行背景颜色的变化选择了哪个表行。如果没有选择,那么它将给出一个对话框,说明存在错误。如果选择了一行,则应该允许您在单击按钮时转到编辑页面。由于某种原因,这只能在大约一半的时间内工作,即使选择了一行,也会显示错误框。任何有关这方面的帮助将不胜感激

$('#edit').click(function() {
                var selected =  $('#deliverytable').find('tr').css("background-color");

                if(selected == "rgb(187, 187, 187)"){
                    window.location = 'editd.html';
                }else{
                    var $dialog = $('<div></div>')
                        .html('<p>Please select a table row</p>')
                        .dialog({
                            autoOpen: false,
                            title: 'ERROR'
                        });
                    $dialog.dialog('open');
                }
            });

2 个答案:

答案 0 :(得分:0)

根据样式属性来确定UI状态是不好的做法。以addClass('ui-row-selected')为例,然后使用hasClass('ui-row-selected')is('.ui-row-selected')

进行简单检查

答案 1 :(得分:0)

jQuery的CSS方法只返回“匹配元素集中FIRST元素的样式属性的值”。 - http://api.jquery.com/css/。因此,这行代码没有按预期执行。

$('#deliverytable').find('tr').css("background-color");

这只返回表中第一行的background-color。因此,您的逻辑只是检查该行。如果要检查所有行,则必须在循环中执行此逻辑。

$('#deliverytable').find('tr').each(function(index, row) {
    if ($(row).css('backgroundColor') == "rgb(187, 187, 187)") {
        //Change the window location
    } else {
        //Show the dialog
    }
});