【问题标题】:use jquery to find any character and remove it使用 jquery 查找任何字符并将其删除
【发布时间】:2013-03-25 06:18:40
【问题描述】:

我在 drupal 中有一个网站。它似乎有问题。在body标签的末尾出现一个数字9。所以我需要通过jQuery删除它。

我知道 jQuery 中有 find() 方法,但它只找到元素而不是字符。我需要找到字符并将其删除。它不属于body标签以外的任何元素,因此我无法选择围绕它的元素并将其删除。

<body>all the other site elements....9</body>

我需要删除那个 9。请提出建议。 谢谢

【问题讨论】:

  • 为什么不从源中删除它。这当然不是正确的方法。
  • 如果你需要在客户端做,用纯javascript做会更容易,不用jQuery。选择最后一个文本节点并删除其textContent的最后一个字符。
  • 不,不,不!你有来自服务器端的流氓角色,你不使用 javascript 来删除那些!!!
  • 请告知如何删除?我发现只有这个解决方案可以从 jQuery 中删除它。没有 php 文件来自它的来源。如果是我直接删除了。

标签: jquery drupal-7 find character


【解决方案1】:

您应该找到附加字符的原因,并将其删除。但是,将其作为临时修复在客户端进行:

您不想操纵整个文档的innerHTML(或.html())。取而代之的是,抓住document.body 的最后一个子节点(到目前为止,jQuery 可以做到这一点),验证它是一个文本节点(此时 jQuery 还不够),并稍微缩短它的文本内容。 textContentinnerText 都不是跨浏览器兼容的 (though we might hope for innerText to become standard)。但是,对于文本节点,nodeValue 可用:

$(document).ready(function(){
  var node = document.body.lastChild;
  if(node && node.nodeType == node.TEXT_NODE){
    node.nodeValue = node.nodeValue.replace(/9^/,"")
  }
})

注意九个被假定为出现在正文中的最后个东西,并且后面没有不可见的内容(空格、脚本标签、注释标签)。可以通过修改正则表达式来忽略空格(留给读者作为练习),并且可以通过迭代来跳过不可见的节点(如果根据您的特定情况定制更容易;毕竟这是一个临时修复)。

有用的链接:

https://developer.mozilla.org/en-US/docs/DOM/Node.lastChild
https://developer.mozilla.org/en-US/docs/DOM/Node.nodeType
https://developer.mozilla.org/en-US/docs/DOM/Node.nodeValue
https://developer.mozilla.org/en-US/docs/DOM/Node.previousSibling

【讨论】:

  • 感谢它工作得很好。我稍微更改了代码。 var node = document.body.lastChild; if(node && node.nodeValue == 9){ node.nodeValue = "";您是否有任何参考链接,我可以从中学习这些基本的 javascripting,这真的非常有帮助。再次感谢。
  • @shreyas MDN(mozilla 开发者网络)是一个很好的参考,它也有一些教程
猜你喜欢
  • 2014-10-17
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 2016-05-09
相关资源
最近更新 更多