0

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

$('#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');
                }
            });
4

2 回答 2

0

jQuery 的 CSS 方法只会返回“匹配元素集中第一个元素的样式属性值”。- 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
    }
});
于 2012-07-03T10:44:33.413 回答
0

根据样式属性来确定 UI 状态是很不好的做法。考虑addClass('ui-row-selected')例如然后使用hasClass('ui-row-selected')或轻松检查is('.ui-row-selected')

于 2012-07-02T20:18:13.367 回答