jQuery hide()不隐藏父级

时间:2012-08-21 11:34:00

标签: jquery forms html hide

JQuery仍然让我发疯... 问题在于:我有一个页面,访问者可以通过点击div内的链接(id =“contact”)来留下他们的电子邮件地址。

<div id="contact"><a href="">vuoi lasciare un recapito?</a></div>

点击后,“contact”div加载一个php表单。用户输入他的电子邮件地址,然后检查地址,然后插入数据库等...通常的业务。

$(document).ready(function() {
$('#contact a').click(function()
    {
    $('#contact').load('mailform.php');
    return false;
    });
$('#contact').submit(function(){
    var email = $('input[name=email]', '#submitmail').val();
    var submit = $('input[name=submit]', '#submitmail').val();
    $('#contact').load('mailform.php',{'email': email,'submit': submit});
    return false;
    });
//the close button - start
$(".cls").click(function(){
    alert($(this).parent().html());
    $(this).parent().hide();
    });
//the close button - end
});

当我想添加“关闭”按钮或链接时会出现痛苦,因此用户可以在填写表单之后甚至在填写表单之前隐藏表单。

<div id="submitmail">
    <form action="#" method="post">
        <fieldset>
        <p><label for="email"><?php echo $_SESSION['nome']; ?></label><input type="text" name="email" /></p>
        <p class="submit"><input type="submit" name="submit" value="inserisci" /></p>
        </fieldset>
        </form>
</div>
<span class="cls">Chiudi</span>

链接(和“关闭按钮”脚本)根本不起作用。没有警报,没有开关,没有div消失......没什么。 已经尝试过$('span.cls').click(function()$('#cls').click(function()(用“div”和带有ID的类切换“span”之后)没有线索。只是一个单击的链接,什么都不做。 Firebug和IE开发工具栏甚至没有进入该功能。 欢迎替代解决方案......

谢谢!

3 个答案:

答案 0 :(得分:4)

试试这个:

$("#contact").on("click", ".cls", function(){
    alert($(this).parent().html());
    $(this).parent().hide();
});

因为.cls元素在绑定时不存在 - 所以您需要将处理程序委托给合适的父元素。阅读本文的“直接和委派活动”部分:

http://api.jquery.com/on/

以上链接摘录:

  

如果要将新HTML注入页面,请选择元素和   将新HTML放入页面后附加事件处理程序。要么,   使用委托事件来附加事件处理程序......

答案 1 :(得分:0)

我的猜测是关闭按钮不是documentReady上DOM的一部分。

答案 2 :(得分:0)

您没有复制以下html的父级:

<span class="cls">Chiudi</span>

试试这个:

$(".cls").click(function(){
    // alert($(this).parent().html());
    $('#submitmail').hide();
});