获取没有标记的HTML文本
我正在尝试通过jquery访问没有HTML的DIV内的一段文本(在本例中为“12个月”)。 我知道如果我知道class级或身份证,我就能找到它,但在这种情况下,它似乎无法被抓住。 有人可以提供潜在的解决方案吗?
- 19.99 $ / 12 Months //This piece of text is the one I need to get and change Si usted escogió la suscripción $19.99, se le cobrará por esa cantidad anualmente.
如果有帮助,这里是检查员看到的代码打印输出。
这有效!
var a = $('.pms-subscription-plan').first().contents().filter(function() { return this.nodeType == 3; }).text(); console.log($.trim(a));
- 19.99 $ / 12 Months Si usted escogió la suscripción $19.99, se le cobrará por esa cantidad anualmente.
var text = $(".pms-subscription-plan").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text();
在这种情况下,以下代码将起作用:
document.getElementsByClassName("pms-divider")[1].nextSibling
但是,我强烈建议将此文本放在标签中。 如果您以任何方式重构DOM,此代码将不起作用。
在HTML中有元素和节点。 每段文字都是一个节点。 您可以使用childNodes
集合。
var textNode = document.querySelector(".pms-subscription-plan").childNodes[9].data.trim();
正如其他人所建议的那样,您可以使用节点/下一个兄弟来获取文本。
但是,对你的html / css做一个小调整是一个更好的选择,例如:
- 19.99 $ / 12 Months Si usted escogió la suscripción $19.99, se le cobrará por esa cantidad anualmente.
而这个小的改变[在持续时间内添加一个span类]会让你从长远来看更容易。 只是我的tuppence!
希望这可以帮助
此function将删除所有标签和内容。 剩下的就是您需要的文字:
function removeTags(){ var txt = $(".pms-subscription-plan").html(); var rex = /(<([^>]+)>).*(<([^>]+)>)|(<([^>]+)>)/ig; alert(txt.replace(rex , "")); }