如何抓取jQuery中元素之前的第一個直接字符?這將爲抓住了第一個直接的字符.cursor
之前,在這種情況下返回d
:抓取元素外面的第一個字符
<span class="input">pwd<span class="cursor"> </span></span>
如何抓取jQuery中元素之前的第一個直接字符?這將爲抓住了第一個直接的字符.cursor
之前,在這種情況下返回d
:抓取元素外面的第一個字符
<span class="input">pwd<span class="cursor"> </span></span>
使用jQuery內容()
var text=$('.input').contents().filter(function(){
return this.nodeType==3 && $(this).next('.cursor').length
}).text() || ' ';
var lastLetter=text.substr(-1);
var txt = (((($('.cursor')[0] || {}).previousSibling || {}).nodeValue || "").match(/.$/) || [""])[0];
人類可讀:選擇「.cursor」而獲得第一個匹配的元素(實際的節點,而不是一個jQuery對象)。獲取該節點的前一個兄弟節點,它應該是一個文本節點,並獲取其節點值(文本內容)。抓住最後一個字符而不必知道字符串的長度,並返回匹配的字符串。每一步的方式,都有一個冗餘|| {}
,|| ""
或|| [""]
以確保以下步驟獲得某種預期的類型而不是null
。
由於jQuery忽略常規文本節點,因此您需要使用一些DOM來完成您正在做的事情。我會做這樣的事情:
var sibling = $('.cursor')[0].previousSibling.nodeValue;
console.log(sibling.charAt(sibling.length - 1));
你也可以使用jQuery的'.contents()',但這樣更乾淨。 +1 – David
有一對夫婦的事情,我能想到的可能是接近你的希望做的,首先請注意,它很重要,你的目標的元素,並在以前的性格會。首先,最簡單的方法就是使用.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);
我怎麼能檢查,如果這是一個字符,如果是這樣,從字符串的結尾去掉呢? –