2013-03-23 41 views
2

我有一個非常簡單的表結構指數()替代jQuery中1.3.2

<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> 

問題指數()函數,它不工作的jQuery 1.3.2 u能請讓我知道任何替代在jQuery的1.3.2指數(),這是代碼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'); 
     }); 
    }); 

Please see JS FIDDLE HERE

+3

jQuery 1.3.2與之後的內容相比,具有深厚的歷史和非常基礎。就我個人而言,我會經歷痛苦的​​障礙,並升級到最新的穩定版本(目前1.9.1)。 – 2013-03-23 12:48:49

+0

我們有什麼替代索引()? – 2013-03-23 12:49:46

+0

任何理由堅持jQuery 1.3.2? – user568109 2013-03-23 13:10:35

回答

3

的jQuery 1.3.2支持prevAll(),所以您在使用index()形式可以與模擬:

if ($(this).parent("td").prevAll().length % 2 === 0) { 
    // ... 
} 

(正如其他人所說,考慮升級,如果在所有可能的。版本1.3.2現在已超過四年。)

+0

這是工作正常thnx .. – 2013-03-24 06:20:52

0

我認爲它幫助你

$("table tr").find('td').each(function(index){ 
     // click td 
     $(this).click(function(){ 
     alert("index : " + index); 
     }); 

}); 
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是從1.2版。