1

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

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

单击后,“联系人” 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 开发工具栏甚至没有进入该功能。欢迎替代解决方案...

谢谢!

4

3 回答 3

4

尝试这个:

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

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

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

摘自以上链接:

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

于 2012-08-21T11:35:19.083 回答
0

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

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

尝试这个:

$(".cls").click(function(){
    // alert($(this).parent().html());
    $('#submitmail').hide();
});
于 2012-08-21T11:39:30.010 回答
0

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

于 2012-08-21T11:38:58.350 回答