我的情况是我的结构如下:
<table>
<tr class="chk"></tr>
<tr>one<tr>
<tr>two<tr>
<tr>three<tr>
<tr>four<tr>
<tr class="chk"></tr>
</table>
<table>
<tr class="chk"></tr>
<tr>one<tr>
<tr>two<tr>
<tr>three<tr>
<tr>four<tr>
<tr class="chk"></tr>
</table>
现在我要做的是在点击tr chk时做点什么。 我现在正在做的是:
$(".chk:even").click(function(){
//do something
});
$(".chk:odd").click(function(){
//do something
});
注意:上述正在运作。
我想知道如何在单个函数中确定行是偶数还是奇数:
$(".chk").click(function(){
if(row is even){
//do something
}
else{
//do something
}
});
或者我已经比我正在寻找的新版本更好或更好了?
如果问题不明确,请告诉我。
答案 0 :(得分:2)
试试这个:
$(".chk").click(function(){
var bIsEven = ($(this).index(".chk") % 2 == 0)?true:false;
if(bIsEven){
//do something
} else{
//do something
}
});
答案 1 :(得分:1)
您拥有的版本更“理想”,因为它将在页面设置时运行一次查询并附加点击处理程序。之后,每次单击元素时,它将只执行一个没有任何条件的函数。您寻找的方式将导致查询在每次单击时运行。这是否重要取决于您的申请。
你原来的方式将遍历行两次,为true,但这将在页面加载时完成。你寻找的方式只会在启动时迭代一次,但是在click处理程序中你需要在每次运行时将'this'对象包装在jQuery对象中以确定它是否为“:even”。
分配新对象通常比在合理大小的集合上进行迭代更为昂贵。
答案 2 :(得分:0)
$(".chk").click(function(){
var evens = $(".chk:even");
if (jQuery.contains( evens, row )){
//do something
} else{
//do something
}
});
答案 3 :(得分:0)
var chks = $("tr.chk");
for(var i=0;i<chks.length;i++) {
// even
if(i % 2 == 0) {
}
else { // odd
}
}
答案 4 :(得分:0)
试试这个(demo):
$('table tr').click(function(){
var row = $(this),
color = (row.index() % 2) ? 'red' : 'blue';
row.css('background', color);
});
奇怪的是.is(':even')
和.is(':odd')
无效...
答案 5 :(得分:0)
如果没有其他工作,你可以使用.index();获取基于0的索引,然后使用%2。