Javascript 获取元素外部的第一个字符
如何在jQuery中获取元素前面的第一个直接字符?这将返回Javascript 获取元素外部的第一个字符,javascript,jquery,Javascript,Jquery,如何在jQuery中获取元素前面的第一个直接字符?这将返回d,用于抓取之前的第一个直接字符。在这种情况下,光标: <span class="input">pwd<span class="cursor"> </span></span> pwd 可读性:选择“.cursor”并获取第一个匹配元素(实际节点,而不是jQuery对象)。获取该节点的上一个同级节点(应该是文本节点),并获取其节点值(文本内容)。在不一定知道字符串长度的情
d
,用于抓取之前的第一个直接字符。在这种情况下,光标
:
<span class="input">pwd<span class="cursor"> </span></span>
pwd
可读性:选择“.cursor”并获取第一个匹配元素(实际节点,而不是jQuery对象)。获取该节点的上一个同级节点(应该是文本节点),并获取其节点值(文本内容)。在不一定知道字符串长度的情况下获取最后一个字符,然后返回匹配的字符串。每个步骤都有一个冗余的
|{}
、| |
或|[“”]
来确保下面的步骤得到预期类型的内容,而不是null
,因为jQuery忽略常规文本节点,所以您需要使用一些DOM来完成所做的事情。我会这样做:
var sibling = $('.cursor')[0].previousSibling.nodeValue;
console.log(sibling.charAt(sibling.length - 1));
我能想到的几件事可能与你想要做的事情很接近,首先请注意,你的目标元素在哪里以及前一个角色在哪里都很重要。首先,最简单的方法是在.parent().html()上使用正则表达式,在元素开始之前获取字符
var content = $(".cursor").parent().html();
var lastChar = content.replace(/.*?(.?)<.*?class="cursor".*?/g, '$1');
使用jQuery内容()
如何检查这是否是一个字符,如果是,请将其从字符串末尾删除?您也可以使用jQuery的
.contents()
,但这更干净+1.
var content = $(".cursor").parent().html();
var lastChar = content.replace(/.*?(.?)<.*?class="cursor".*?/g, '$1');
var content = $(".cursor").prev().html();
var lastChar = content.substr( content.length-2, 1 );
var text=$('.input').contents().filter(function(){
return this.nodeType==3 && $(this).next('.cursor').length
}).text() || ' ';
var lastLetter=text.substr(-1);