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

UI の状態を決定するためにスタイル プロパティに依存することは、明らかに悪い習慣です。addClass('ui-row-selected')たとえば、hasClass('ui-row-selected')またはで簡単にチェックすることを検討してくださいis('.ui-row-selected')

于 2012-07-02T20:18:13.367 に答える
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 に答える