【问题标题】:.contains() throws an error "Uncaught TypeError: Object [object Object] has no method 'contains' ".contains() 抛出错误“Uncaught TypeError: Object [object Object] has no method 'contains'”
【发布时间】:2014-02-26 18:17:03
【问题描述】:

我确实有一个工作代码(使用 :contains),但我无法使用 .contains() 使其工作,我想问一下为什么。 HTML:

<div id="quiz_score_percent">Your score: <em class="placeholder">100</em> %</div>
<div id="quiz_summary">
<p>quiz feedback</p>

JS(工作,不需要改变):

$(document).ready(function () {
 if ($("#quiz_score_percent").has(":contains('100')").length) {
    console.log("test");
    $("#quiz_summary").append("<p>test text</p>");

}

});

但是.contains()

if ($("#quiz_score_percent").contains('100')){/* execute */} 

它抛出:

Uncaught TypeError: Object [object Object] has no method 'contains'

JS 在这里摆弄: JS fiddle code

为什么 .contains() 不起作用? 接受的solution here 对我不起作用...

【问题讨论】:

  • 因为jQuery中没有contains()方法。也许您使用的插件提供了一个插件,但没有开箱即用的插件。
  • 所以我完全误解了这一点? --> api.jquery.com/jquery.contains
  • 是的,这不是一回事,并且不会复制 :contains() 选择器的功能(它处理元素关系,而不是内容)。

标签: jquery contains


【解决方案1】:

试试这个:

if ($("#quiz_score_percent").contains('100') == true){/* execute */}

【讨论】:

  • 这对错误消息有什么帮助,“Uncaught TypeError: Object [object Object] 没有方法 'contains'”
【解决方案2】:

:contains.contains() 是两种不同的动物

  • :contains 将检查特定文本是否包含在选择器的内部 HTML 中。
  • $.contains(container, contained) 检查给定元素(第二个参数)是否是选择器(第一个参数)的子元素。 100 不是 HTML 节点/jQuery 元素。 (感谢 Frédéric 的提示!)

参见http://api.jquery.com/jQuery.contains/http://api.jquery.com/contains-selector/

【讨论】:

  • 那将是$.contains(),而不是普通的contains()(即它适用于全局jQuery对象,而不是元素集)。
猜你喜欢
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多