2017-02-25 89 views
1

我有一个代码让人想起这个代码的网站,我不明白为什么if语句不起作用。从查看其他代码示例,我的猜测是我需要在我的if声明之上的另一个函数? (而不是jQuery(document).ready(function($){jQuery如果元素:包含不工作

HTML:

<p>Paragraph One</p> 
<p class="red">Target paragraph</p> 

的jQuery:

jQuery(document).ready(function($){ 
    if($('p:contains("target")')){ 
    $(this).removeClass("red"); 
    } 
)}; 

的jsfiddle: https://jsfiddle.net/CSS_Apprentice/2a2qpg15/

值得注意:使用jQuery(document).ready(function($){,因为它是一个WordPress构建。

编辑:离开的"target"小写版本在这里,但区分大小写并不是唯一的问题

任何帮助,方向,和/或文档感谢!

+1

这是区分大小写。您需要搜索“目标”http://api.jquery.com/contains-selector/ –

+0

单独资本化“目标”并不能解决问题,但@KScandrett答案有效。仍然不确定为什么'if'语句不起作用 –

+1

它不起作用,因为'this'不像您所期望的那样引用jQuery对象。为了让它引用你需要使用的对象'$('p:contains(“target”)')。each(function(){... $(this)...})' –

回答

2

变化 “目标” 到 “目标” - 它是区分大小写的,你可以用这个来代替:

jQuery(document).ready(function($){ 
    $('p:contains("Target")').removeClass("red"); 
}); 

演示:https://jsfiddle.net/m092Lxyn/

2

检查长度属性,因为jQuery返回的对象在JavaScript中总是具有真值。虽然:contains是区分大小写的,但使用Target代替。

if($('p:contains("Target")').length) 

对于自this$('p:contains("Target")')除去申请remove()方法直接不是指元件。

$('p:contains("Target")').remove(); 

或使用不区分大小写的匹配filter()方法。

$('p').filter(function(){ 
    return $(this).text().toLowerCase().indexOf("target") > -1; 
}).remove()