刚刚从 jQuery 1.3.2 升级到 1.8.2,发现在 1.3.2 中工作的几个功能不再工作。其中大部分我已经修复,但坚持这个:

我需要根据表格单元格中的前几个字符进行搜索(“开头为”搜索),但此代码在最新版本的 jQuery 中不再适用:

var matchingElements = $("#tblSelect1>tbody>tr>td:first-child[innerText^='" + text + "']");

我怀疑这与以下事实有关,即过去像属性一样工作的一些东西现在变成了属性 - innerText 是一个属性(我认为),所以它可能与属性开始 - 选择器符号不兼容:[attr^='value']
我不想使用 :contains 因为我只想要其 innerText 以搜索 text 开头的元素

想法?谢谢!

最佳答案

您可以使用 filter 方法。 innerText 是一个非标准属性,不适用于 Firefox,为了支持所有主要浏览器,您应该检查这两个属性,或者使用跨浏览器的 jQuery text 方法。

var $matchingElements = $("#tblSelect1 > tbody > tr > td").filter(function(){
      var c = this.textContent || this.innerText;
      return c.indexOf(text) === 0
});

关于jQuery -innerText 以选择器开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14165917/

10-09 22:26