2014-10-02 178 views
0

该任务应该非常简单:从我的输入字段开始,找到最接近的p并更改其样式。jQuery找不到最接近的p

唯一的事情是:我找不到我的p ...

<p> 
    <div class="form-group"> 
    <label for="Email" class="control-label col-md-2">Email</label> 
    <div class="col-md-10"> 
     <input type="email" value="" name="Email" class="form-control" /> 
    </div> 
    </div> 
</p> 

这是javascript代码,找到p元素

$('[name=Email]').closest("p").css('background-color', 'red') 

closest("p")回报什么。

任何想法我失踪?

+0

'$('[name = Email]')'的长度是多少? – 2014-10-02 08:23:30

+0

@ Roamer-1888长度为1 – 2014-10-02 08:25:05

+0

你最好还是使用ID字段,然后使用'$('#Email')'。 'name'字段只对表单提交非常有用,对于DOM操作不是很有用。 – Alnitak 2014-10-02 08:25:20

回答

9

您的HTML无效。使用a validator

<p>中不能有<div>。 div开始标记隐含地结束段落元素。段落结束标记然后被忽略,因为没有关闭的段落。

您的标记相当于:

<p></p> 
<div class="form-group"> 
    <label for="Email" class="control-label col-md-2">Email</label> 
    <div class="col-md-10"> 
     <input type="email" value="" name="Email" class="form-control" /> 
    </div> 
</div> 

这意味着输入也没有段落里。所以当你寻找最接近输入的祖先是一个段落时,没有一个。

+0

太棒了!感谢您对我的任何问题最快的解决方案,在这里stackoverflow – 2014-10-02 08:48:36