2

我有一个带有输入的表单和表单之外的 div 容器,每个输入都有帮助文本。

<form>
    <input id="name" />
    <input id="email" />
    <input id="pass" />
</form>
<div class="help-container">
    <p class="help-name"></p>
    <p class="help-email"></p>
    <p class="help-pass"></p>
</div>

现在 .help-container 最初是用 { display: none; 隐藏的。} 以及每个孩子 p。

我遇到问题的jQuery是:

$("form").find("input").focus(function(){
    var parent = $(this).attr("id");
    $(this).closest("form").next(".help-container").show();
})

1)这不起作用。为什么?

$("form").find("input").focus(function(){
    var parent = $(this).attr("id");
    $(this).closest("form").next(".help-container").show();
    $(".help-container").children("p").hide();
    $(".help-container").children("p").find(".help-" + parent).show();
})

2)这不起作用。为什么?

4

3 回答 3

2

这是您的问题

$("form").find("input").focus(function(){
    var parent = $(this).attr("id");
    $(this).closest("form").next(".help-container").show(); // you show the container
    $(".help-container").children("p").hide(); // hide all p under it - nothing is shown now
    $(".help-container").children("p").find(".help-" + parent).show(); // you're trying to find elements under p with class .help-xxx
})

你需要把它改成这个

$("form input").focus(function(){
    var parent = $(this).attr("id");
    $(".help-container").children("p").hide();    // hide all p's
    $(".help-container").children("p.help-" + parent).show(); // show relevant p - since you want the p with the matching class
});​

http://jsfiddle.net/vjUme/

于 2012-12-13T20:21:27.950 回答
2

这条线不起作用:

 $(".help-container").children("p").find(".help-" + parent).show();

因为您正在元素内搜索 .help-ID ,请p尝试以下操作:

 $(".help-container").children("p.help-" + parent).show();
于 2012-12-13T20:22:24.793 回答
2

JSBIN

$("form").find("input").focus(function(){
    var helper = $(this).attr("id");
    $(this).closest("form").next(".help-container").show();
    $(".help-container").find(".help-"+ helper ).show().siblings('p').hide();
});
于 2012-12-13T20:23:56.103 回答