2

フレキシグリッドからセルのテキスト値を取得しようとしています。ただし、そのエラーが発生し続けます。

これは、特定のセルのテキストを取得するための私の関数です (Flexigrid には「attr」がなく、代わりに「abbr」があります)。

function getSelectedCopyDates() {
    var arr = new Array();
    debugger;
    //for every row that has a checked checkbox
    $("tr").has(".noteCheckBox:checked").each(function(i) {
        if ($(this.id) !== "checkAllNotes") {
            //push the value of column(FName, LName) into the array 
            arr.push($("#" + this.id + "> td[abbr='EventDate'] > div").text());
        }
    });
    return arr;
}

「checkAllNotes」(メインチェックボックス)をクリックしたときにのみ、そのエラーが発生します。チェックボックスを手動でチェックすると、すべて正常に動作します。

これが私のフレキシグリッドレイアウトです:

$('#viewNotesGrid').flexigrid({
    url: url,
    dataType: 'json',
    method: 'get',
    colModel: [{
        display: '<input type="checkbox" class="noteCheckBox" id="checkAllNotes" />',
        name: 'checkBox',
        width: 20,
        sortable: false,
        align: 'center',
        process: showDescription
    }, {
        display: 'Date',
        name: 'EventDate',
        width: 80,
        sortable: true,
        align: 'center',
        process: showDescription
    },
4

2 に答える 2

2

最初の問題は、$("tr").has(".noteCheckBox:checked")入力チェックボックスではなく、tr要素を返すことです。

2番目の問題:$(this.id) !== "value"動作しません。jQueryオブジェクトを作成し、それを文字列と比較しています。する必要がありますthis.id !== "value"

3番目の問題:前の回答ですでに説明されています。要素にidがないように見える場合は、"#" + this.id + ">結果に"#>"なります。実際には、trではなく特別な入力フィールドのidを比較する必要があります。

ここではいくつかの仮定をしますが、これはうまくいくかもしれません:

function getSelectedCopyDates() {
var arr = new Array();

//for every row that has a checked checkbox
$("tr .noteCheckBox:checked").each(function (i) {
    if (this.id !== "checkAllNotes") {
        var tr = $(this).parents("tr")[0]; // going back to parent tr
        arr.push($(tr).find(" > td[abbr='EventDate'] > div").text());
    }
});
return arr;
}
于 2012-10-09T20:08:35.683 に答える
2

this.id ==vsを使用するつもりだと思います$(this.id) ==this.idが空であるためにエラーが発生した可能性もあるようです(jQuery は でそのエラーをスローします$("#>")が、エラー メッセージにも が含まれている>ようですので、よくわかりません)。

于 2012-10-09T19:16:23.543 に答える