8

th私はjQueryとその使用法について十分な知識を持っていますが、今日、jQueryを使用する要素内の一致するラベルの列インデックスを取得するのに苦労しましたtable。テキストがMobilethである要素のインデックスを取得したい。この場合、インデックスは 2 にする必要があります。実際のインデックスを取得していますが、これは正しい方法ではありません。jQueryがメソッドを使用して正しいインデックスを提供しない理由を知りたいです。labelindex()

このためのJS Fiddlerも作成しました。

jQuery

var elem = $('#tbl th');
var rIndex;
alert('Length : ' + elem.length);
var index = elem.filter(
    function(index){
        var labelText = $(this).find('label').text();        
        //alert(index + ' - ' + labelText);
        var result = labelText == 'Mobile';
        if (result)
            rIndex = index;
        return result;
    }).index();
alert("jQuery Index : " + index);
alert("Actual Index : " + rIndex);

HTML

<table id="tbl">
    <tr>
        <td></td>
        <th><label>Application No.</label></th>
        <td></td>
        <th><label>Name</label></th>
        <td></td>
        <th><label>Mobile</label></th>
        <td></td>
        <th><label>Gender</label></th>
    </tr>
</table>
4

8 に答える 8

12

引数が .index() メソッドに渡されない場合、戻り値は、兄弟要素に対する jQuery オブジェクト内の最初の要素の位置を示す整数です。

これにより、実際のインデックス DEMOが得られます

elem.each(function(){
    if( $(this).find('label').text()=='Mobile') {
        alert(elem.index(this));
    }
});
于 2013-05-16T07:45:42.940 に答える
1
$('#tbl').find('th').each(function($index){
    if($(this).children('label').html() == 'Mobile')
        alert($index);
})
于 2013-05-16T07:34:43.107 に答える
0

Index 関数は、指定したリストに基づいてインデックスを返します。この場合、フィルターの結果です。

お役に立てれば

于 2013-05-16T07:35:32.830 に答える
0

これを行う簡単な方法の 1 つは、td で .prevAll() を使用してから、その親 tr で使用することです。

var row = $td.closest('tr').prevAll().length;
var col = $td.prevAll().length;

( $td being the td elem you are checking)

デモ: http://jsfiddle.net/g5s0ex20/2/

于 2015-04-20T18:37:14.927 に答える
0

「引数が .index() メソッドに渡されない場合、戻り値は、兄弟要素に対する jQuery オブジェクト内の最初の要素の位置を示す整数です。」

ソースhttp://api.jquery.com/index/

以下は、探している結果を得るために index() を使用する方法の例です。例をより単純にするために、インデックスが必要な列に id を追加したことに注意してください。必要に応じて自由に選択してください。

<table id="tbl">
    <tr>
        <td></td>
        <th><label>Application No.</label></th>
        <td></td>
        <th><label>Name</label></th>
        <td></td>
        <th id="mobile"><label>Mobile</label></th>
        <td></td>
        <th><label>Gender</label></th>
    </tr>
</table>

var elem = $('#tbl th');
var rIndex;
alert('Length : ' + elem.length);
var index = elem.filter(
    function(index){
        var labelText = $(this).find('label').text();        
        //alert(index + ' - ' + labelText);
        var result = labelText == 'Mobile';
        if (result)
            rIndex = index;
        return result;
    }).index();
alert("jQuery Index : " + index);
alert("Actual Index : " + rIndex);


correctIndex = $('th').index($('#mobile'))

alert("Used correctly :" + correctIndex);
于 2013-05-16T07:30:44.637 に答える