我想跳过2个不同类的表中的tr。
第一个类是.gridTitleRow,第二个tr是类.gridSpan。如何在下面的语法中跳过这些?
$.each($(".gridTable tr:not(.gridTitleRow)"), function(a, b){});
已编辑我正在使用以下各项
$("#gridBtn").live("click", function (e) {
e.preventDefault();
var indexArraay = [];
var flag = false;
$.each($(".gridTable tr:not(.gridTitleRow)"), function(a, b){
var id = $("input.idField", b).val();
var order = $("input[id='index']", b).val();
var active = $("input[id='activeCb']", b).attr("checked");
var deleteRow = $("input[id='deleteCb']", b).attr("checked");
(deleteRow == true) ? flag = true : null;
indexArraay.push({
"id": id,
"index": order,
"active": active,
"delete": deleteRow
})
});
if (flag == true)
{
$("#dialog:ui-dialog").dialog("destroy");
var text = "Alert: Deleting footer Prent menu will delete all submenus and assigned pages to it.";
$('<div title="Confirmation:">' + text + '</div>').dialog({
height: 'auto',
width: 350,
modal: true,
resizable: false,
buttons: {
Cancel: function () {
$(this).dialog("close");
},
Confirm: function () {
$(this).dialog("close");
ProcessGrid(indexArraay);
ReloadGrid();
}
}
});
}else{
ProcessGrid(indexArraay);
//ReloadGrid();
}
}); //End of gridBtn
表格
<script id="gridTemplate" type="text/x-jQuery-tmpl">
<tr class="gridRow">
<td class="gridSpan" colspan="5">${$data[0].Title}</td>
</tr>
{{tmpl($data) "#cellTemplate"}}
</script>
<script id="cellTemplate" type="text/x-jQuery-tmpl">
<tr class="gridRow">
<td class="cellTd ">
<input type="checkbox" id="deleteCb" />
<input type="hidden" id="Id_ + ${num}" class="idField" value="${Id}" />
</td>
<td class="cellTd">
<input id="index" name="index" class="numberField" type="text" value="${IndexOrder}" />
</td>
<td class="cellTd">${DisplayName}</td>
<td class="cellTd ">${UrlName}</td>
<td class="cellTd ">
<input type="checkbox" id="activeCb" {{if Active}} checked{{/if}} />
</td>
</tr>
</script>
<span class="instructions">Only numeric value is allowed in IndexOrder textbox.</span>
<div class="gridDiv">
<table class="gridTable" cellspacing="0" cellpadding="0">
<tbody>
<tr class="gridTitleRow">
<td class="iconLink width36">Delete</td>
<td class="iconLink width60">Sort Order</td>
<td class="iconLink widthAuto">Display Name</td>
<td class="iconLink widthAuto">Url Name</td>
<td class="iconLink widthAuto">Active</td>
</tr>
</tbody>
</table>
答案 0 :(得分:6)
$.each($(".gridTable tr:not(.gridTitleRow, .gridSpan)"), function(a, b){});
在选择器中,“,”就像“或”。 等等 - 就像“和”,但因为你的选择器在“not()”子句中,所以“不是这一个而不是那个”,就像“不是(这一个或那个)” 。我想我可能会说一点: - )
编辑 - 我没有说服自己再次“或”。需要咖啡。
再次编辑 - 有几件事:
当第一个对象已经是jQuery对象时,没有理由调用“$ .each()”:
$(".gridTable tr:not(.gridTitleRow, .gridSpan)").each(function(i, elem) {
按“id”值搜索时,没有理由使用属性选择器,也没有理由使用上下文,因为“id”值必须是唯一的。使用“#id”:
var order = $('#index');
请再次注意,无效对页面上的多个元素使用相同的“id”值。如果您在许多表行上使用相同的“id”,那就错了,您将不得不更改它。
jQuery团队已弃用表单$(selector, base)
,而更喜欢表单$(base).find(selector)
。在内部,库总是执行转换,因此您可以省去它的麻烦:
var deleteRow = $(b).find('#deleteCb');
根本不清楚“旗帜”应该做什么,但你可能忘了宣布它。也许这是一个全局变量。
你的评论说“空tr传递未定义”,但我不知道这意味着什么。如果选择器没有找到<tr>
个元素,那么“each”循环就不会发生。如果您描述的是未定义的确切内容,则可以提供帮助。
答案 1 :(得分:1)
我可能会将其从选择器中删除,以便保留有效的querySelectorAll
选择器:
$(".gridTable tr").not('.gridTitleRow,.gridSpan').each( function(a, b){});
如果只有一个使用qsa
过滤掉的类名,则选择器对:not()
有效,但有两个,它变为无效,默认为Sizzle基于javascript的引擎。< / p>