我试图从flexigrid获取单元格的文本值。 但是我不断收到这个错误。
这是我检索特定单元格文本的功能(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”(主复选框)时,我才会收到该错误。如果我手动勾选一个复选框,那么一切正常。
这是我的flexigrid布局:
$('#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
},
答案 0 :(得分:2)
我认为您的意思是使用this.id ==
与$(this.id) ==
。似乎错误可能是因为this.id
为空(jQuery会在$("#>")
上抛出该错误,但错误消息似乎也包含>
,所以我不确定)。
答案 1 :(得分:2)
第一个问题是$("tr").has(".noteCheckBox:checked")
返回tr元素,而不是输入复选框。
第二个问题:$(this.id) !== "value"
永远不会奏效。您正在创建jQuery对象并将其与字符串进行比较。应为this.id !== "value"
第3个问题:已经在之前的回答中解释过了。如果element似乎没有id,那么"#" + this.id + ">
将导致"#>"
,并且您实际上想要比较特殊输入字段的id,而不是tr。
在这里做一些假设,但这可能有效:
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;
}