0

jQueryで要素の直前の最初の文字を取得するにはどうすればよいですか? この場合、これはd直前の最初の文字を取得するために返されます。.cursor

<span class="input">pwd<span class="cursor">&nbsp;</span></span>
4

4 に答える 4

1

jQuery の使用 content()

var text=$('.input').contents().filter(function(){
        return this.nodeType==3 && $(this).next('.cursor').length
    }).text() || ' ';
var lastLetter=text.substr(-1);
于 2012-12-29T01:20:50.950 に答える
1

jQuery は通常のテキスト ノードを無視するため、何らかの DOM を使用して実行する必要があります。私はこのようなことをします:

var sibling = $('.cursor')[0].previousSibling.nodeValue;
console.log(sibling.charAt(sibling.length - 1));
于 2012-12-29T01:15:12.540 に答える
0
var txt = (((($('.cursor')[0] || {}).previousSibling || {}).nodeValue || "").match(/.$/) || [""])[0];

人間が読める形式: 「.cursor」を選択し、最初に一致する要素 (jQuery オブジェクトではなく実際のノード) を取得します。そのノードの前の兄弟 (テキスト ノードである必要があります) を取得し、そのノード値 (テキスト コンテンツ) を取得します。文字列の長さを必ずしも知らずに最後の文字を取得し、一致した文字列を返します。途中の各ステップには、冗長な|| {},|| ""または|| [""]次のステップがnull.

于 2012-12-29T01:03:52.160 に答える
0

あなたがやろうとしていることに近いかもしれないと私が考えることができることがいくつかあります.最初に、あなたがターゲットとする要素がどこにあり、前のキャラクターがどこにいるのかが重要であることに注意してください. 最初に最も簡単なのは、.parent().html() で正規表現を使用して、要素の開始直前の文字を取得することです。

var content = $(".cursor").parent().html();
var lastChar = content.replace(/.*?(.?)<.*?class="cursor".*?/g, '$1');

もちろん、自分のやっていることに合わせて正規表現を少し調整する必要があるかもしれませんが、それで始められるはずです。ターゲット (たとえば pwd ) から前の要素の最後の文字を取得したい場合は、.prev().html() で substr を使用できます。

var content = $(".cursor").prev().html();
var lastChar = content.substr( content.length-2, 1 );
于 2012-12-29T01:15:27.603 に答える