3

他の要素が混在している可能性のある親内のテキスト要素の子番号をどのように取得できるかを理解する必要があります。例を次に示します。

<p>
    Here is a picture of something:
    <img src="something.png"/>
    Now on to other things, like <span id="highlight">this</span> thing.
</p>

(0ベースのカウント)<span>である必要がある要素の子番号を取得したい。3どうすればこれを行うことができますか?JQuery の使用index()は機能しません1。この場合、テキストではなく要素のみをカウントするためです。この度はご覧いただきありがとうございます。

4

3 に答える 3

2

jQuery には、.contents()テキスト ノード (およびコメント ノード) を含むすべての子を取得するメソッドがあります。それを使用して、インデックス 3 のスパンを取得できます。

$('p').contents()[3]; // your span!

次に.index、ノード参照に基づいてインデックスを取得するために使用できます。

var pContents = $('p').contents();
var span = pContents[3];  // your span
var spanIndex = pContents.index(span); // 3

http://jsfiddle.net/yERLu/1

于 2013-05-09T01:27:51.517 に答える
2
var span = document.getElementById('highlight'),
    index = Array.prototype.indexOf.call(span.parentNode.childNodes, span);

Array.prototype.indexOf配列であるかのように NodeList ( span.parentNode.childNodes) で動作し、要素のインデックスを取得しますspan

.indexOf()IE8 以前をサポートしている場合は、互換性パッチが必要です。

于 2013-05-09T00:04:05.540 に答える
1
function getIndex(node) {
    var n = 0;

    while (node = node.previousSibling)
        n++;

    return n;
}

var idx = getIndex(document.getElementById("highlight"));
于 2013-05-09T00:00:42.790 に答える