2014-02-07 77 views
0

我想拥有jQuery的,如果在一个divjQuery的 - DIV:包含不工作

这里一特定词组自动填入输入的是什么我到目前为止....

<li> 
    <div> 
     <div class="gfield_admin_header_title">Orange</div> 
      <div> 
       <ul> 
        <li><input type="text" id="field_css_class" /></li> 
       </ul> 
      </div> 
     </div> 
    </div> 
</li> 
<li> 
    <div> 
     <div class="gfield_admin_header_title">Apple</div> 
      <div> 
       <ul> 
        <li><input type="text" id="field_css_class" /></li> 
       </ul> 
      </div> 
     </div> 
    </div> 
</li> 
<li> 
    <div> 
     <div class="gfield_admin_header_title">Pear</div> 
      <div> 
       <ul> 
        <li><input type="text" id="field_css_class" /></li> 
       </ul> 
      </div> 
     </div> 
    </div> 
</li> 

$("div > div:contains('Orange')").find("#field_css_class").val('DesiredVal'); 

这不是为我工作,如果我使用...

$("div").find("#field_css_class").val('DesiredVal'); 

然后,它确实改变了输入,但它会为#field_css_class的所有实例(如预期)

所以我假设它的我的div:包含它不喜欢,任何人都可以帮忙吗?

回答

1

第一个ID必须是唯一的,这样使用field_css_class作为一个类的属性,而不是将它作为一个id的那么

$("div").has('> div:contains("Orange")').find(".field_css_class").val('DesiredVal'); 

演示:Fiddle

的问题是元素field_css_class不是的一个后裔div包含文字Orange,它是兄弟元素的后代

注意:在您的标记中,在ea末尾有一个额外的</div> CH li元素

+0

我不能得到这个工作,该场通过被动态生成由重力形式插件在WordPress仪表盘和他们每个人都有#field_css_class,我不能改变他们上课 – fightstarr20

+1

在这种情况下'.find(“#field_css_class”)'而不是'.find(“。field_css_class”)' –

+0

我试过了,它不适用于我。它只是将它应用于所有#field_css_class - 不仅仅是'Orange'div – fightstarr20

1

我认为你应该使用类,因为ID是不可取的重复在那里你可以把它直接

$(".className").val("value") 
1

您可以使用:

$.each($('.gfield_admin_header_title'), function() { 
    if ($(this).text() == "Orange") { 
     $(this).next().find('.field_css_class').val('DesiredVal'); 
    }; 
}); 

的一些注意事项:

1)id应该是唯一的,您应该使用类代替(在这种情况下.field_css_class

2)你的HTML标记似乎错了,你之前的最后div内的每个li

3以上代码校验冗余收盘</div>标签)预计div你里面的文本是否为橙色或不是,如果是的话改下值为input

Fiddle Demo