我有一个非常简单的表结构
<table width='50%' align='center' id='tabs'>
<tr>
<td>1.00</td>
<td>5.23</td>
<td>6.12</td>
</tr>
<tr>
<td>2</td>
<td>2.45</td>
<td>2.45</td>
</tr>
<tr>
<td>3.12</td>
<td>2.98</td>
<td>2.09</td>
</tr>
</table>
index()函数在jquery 1.3.2中不起作用的问题请你告诉我jquery 1.3.2中index()的任何替代方法,这是我得到的代码if($(this).parent('td').index() % 2 === 0){
总是返回-1的问题
$("table td").click( function(e){
if($(this).find('input').length){
return ;
}
var input = $("<input type='text' size='5' />").val( $(this).text() );
$(this).empty().append(input);
$(this).find('input')
.focus(function(e){
if($(this).val()=='0.00' || $(this).val()=='0'){$(this).val('');}
}).keydown(function(event){
if($(this).parent('td').index() % 2 === 0){
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 190 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
} } }
}).blur( function( e ){
if($(this).val()!=""){
if (!isNaN(parseFloat($(this).val()))) {
var val1=parseFloat($(this).val()).toFixed(2);
$(this).val(val1);
$(this).parent('td').text(
$(this).val()
);
}
}
else{
$(this).parent('td').text("0.00");
}
});
});
$(function() {
$('table tr td').hover(function() {
$(this).css('background-color', '#FFFFB0');
},
function() {
$(this).css('background-color', '#F4F4F4');
});
});
答案 0 :(得分:3)
jQuery 1.3.2支持prevAll(),因此您使用的index()形式可以通过以下方式进行模拟:
if ($(this).parent("td").prevAll().length % 2 === 0) {
// ...
}
(正如其他人所说,如果可能的话,请考虑升级。版本1.3.2现在已经超过四年了。)
答案 1 :(得分:1)
如果您必须坚持使用v1.3.2,那么您很幸运,:even
选择器将完成这项工作,并且可以从v1.0获得。
您还可以使代码更具可读性,如下所示:
...keydown(function(event) {
var okKeys = [8,9,13,27,35,36,37,38,39,46,190],
k = event.keyCode;
if($(this).closest('td').is(":even")) {
if ( $.inArray(k, okKeys) > -1 || (event.ctrlKey && k == 65) ) {
return;// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (k < 48 || k > 57) && (k < 96 || k > 105 )) {
event.preventDefault();
}
}
}
})...
$。inArray可从v1.2获得。
答案 2 :(得分:0)
我认为对你的帮助
$("table tr").find('td').each(function(index){
// click td
$(this).click(function(){
alert("index : " + index);
});
});