如果P标签显示:无;使用Javascript

时间:2011-10-24 14:59:03

标签: javascript jquery

我有以下......

 $(document).ready(function() {
        $('p:contains("You")').parent('span').prev('input').addClass('error');
  });

我的函数工作正常,因为它将类添加到正确的输入,但只有在显示包含“你”的段落时才应添加类:inline。

有人知道我该怎么做吗?


我对每个输入的标记与此类似....

<li class="yourdetli">
    <label class="yourdet">House Number</label>
    <input type="text" id="ctl00_ContentPlaceHolder1_TB_HNumber2" name="ctl00$ContentPlaceHolder1$TB_HNumber2">
    <span style="color: Red; display: none;" class="errorp" id="ctl00_ContentPlaceHolder1_RequiredFieldValidator9">
        <p>You must complete this field</p>
    </span>
 </li>

4 个答案:

答案 0 :(得分:2)

您可以使用filter()并检查显示属性:

 $(document).ready(function() {
        $('p:contains("You")').filter(function(){
                               return $(this).css('display') === 'inline';
                               })
                               .parent('span')
                               .prev('input')
                               .addClass('error');
  });
如果函数返回true,

filter会保留元素

答案 1 :(得分:1)

$('p:contains("You"):visible')

假设您没有更改文档中任何位置的段落显示。

答案 2 :(得分:1)

您可能想要尝试收集包含<p>的所有you标记,并使用if语句循环所有这些标记。

如果css displayinline,请将error添加到input

这可能会有所帮助

$(document).ready(function(){
  $("p:contains('you')").each(function(){
    if($(this).css('display') === 'inline'){
      $(this).parent('span').prev(':input').addClass('error');
    }
  });
});

答案 3 :(得分:0)

:包含区分大小写。 &#34;您&#34; 不确定这是不是问题。