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 で機能しない index() 関数の問題 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');
        });
    });

ここでJS FIDDLEを参照してください

4

3 に答える 3

3

jQuery 1.3.2はprevAll()をサポートしているため、使用しているindex()の形式は次のようにエミュレートできます。

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

(他の人が言っているように、可能であればアップグレードを検討してください。バージョン1.3.2は現在4年以上前のものです。)

于 2013-03-23T13:17:29.317 に答える
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 から利用可能でした。

于 2013-03-23T13:20:45.330 に答える
0

私はあなたのためにそれが役立つと思います

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

}); 
于 2013-03-23T13:10:47.407 に答える