2012-12-29 47 views

回答

1

使用jQuery內容()

var text=$('.input').contents().filter(function(){ 
     return this.nodeType==3 && $(this).next('.cursor').length 
    }).text() || ' '; 
var lastLetter=text.substr(-1); 
0
var txt = (((($('.cursor')[0] || {}).previousSibling || {}).nodeValue || "").match(/.$/) || [""])[0]; 

人類可讀:選擇「.cursor」而獲得第一個匹配的元素(實際的節點,而不是一個jQuery對象)。獲取該節點的前一個兄弟節點,它應該是一個文本節點,並獲取其節點值(文本內容)。抓住最後一個字符而不必知道字符串的長度,並返回匹配的字符串。每一步的方式,都有一個冗餘|| {},|| ""|| [""]以確保以下步驟獲得某種預期的類型而不是null

+0

我怎麼能檢查,如果這是一個字符,如果是這樣,從字符串的結尾去掉呢? –

1

由於jQuery忽略常規文本節點,因此您需要使用一些DOM來完成您正在做的事情。我會做這樣的事情:

var sibling = $('.cursor')[0].previousSibling.nodeValue; 
console.log(sibling.charAt(sibling.length - 1)); 
+1

你也可以使用jQuery的'.contents()',但這樣更乾淨。 +1 – David

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); 
相關問題