如何在jQuery中的元素之前获取第一个直接字符?在这种情况下,这将返回d
以获取.cursor
之前的第一个直接字符:
<span class="input">pwd<span class="cursor"> </span></span>
答案 0 :(得分:1)
由于jQuery忽略了常规文本节点,因此您需要使用一些DOM来执行您正在执行的操作。我会做这样的事情:
var sibling = $('.cursor')[0].previousSibling.nodeValue;
console.log(sibling.charAt(sibling.length - 1));
答案 1 :(得分:1)
使用jQuery内容()
var text=$('.input').contents().filter(function(){
return this.nodeType==3 && $(this).next('.cursor').length
}).text() || ' ';
var lastLetter=text.substr(-1);
答案 2 :(得分:0)
var txt = (((($('.cursor')[0] || {}).previousSibling || {}).nodeValue || "").match(/.$/) || [""])[0];
Human-readable:选择“.cursor”并获取第一个匹配元素(实际节点,而不是jQuery对象)。获取该节点的上一个兄弟节点,该兄弟节点应该是文本节点,并获取其节点值(文本内容)。抓取最后一个字符,而不必知道字符串的长度,并返回匹配的字符串。每一步都有一个冗余的|| {}
,|| ""
或|| [""]
,以确保以下步骤获得预期类型而不是null
。
答案 3 :(得分: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 );