在$(“#div_id”)之后,jQuery弹出窗口没有正确显示。dialog();

时间:2011-11-28 22:28:49

标签: jquery

我有这个jQuery函数:

$('#invite_friends_email').live('click' , function() 
{
    $("#invite_friends_email").dialog();

    return false;       
});

并在该页面上我导入了这样的div:

<?php
include '../divs/invite_frineds_by_email.php';
?>

并且div本身看起来像这样:

<div id="invite_friends_email" style="display: none;">
    <form method="post" action="">
    <p>
    <br />
        <h3>Enter Your Friends Email Addresses (Separated by Comma)</h3>
        <textarea type="textarea" rows="2" cols="75" name="emails"></textarea>
    </p>
    <p>
        <strong><h3>Email Subject (Edit subject to add your name so your friends recognize you)</h3></strong>
        <input type="text" name="subject" size="75" value="Your friend wants to invite you to brainstorm problem solutions">
    </p>
    <p>
        <h3>Enter Your Message: (Edit the body of the text however you like)</h3>
        <textarea type="textarea" rows="5" cols="75" name="message">Here is the URL of the problem:

    http://www.problemio.com/problems/problem.php?problem_id=<?php echo $problem_id; ?>
        </textarea>
    </p>
    <p>
        <input type="submit" style="border: none;" alt="Send email!" />
    </p>
    </form>
</div>

您可以通过此处重现当前问题: http://www.problemio.com/problems/problem.php?problem_id=225点击“通过电子邮件邀请朋友”链接。现在,我可以看出正在调用click函数,但不确定为什么对话框没有弹出。知道如何让它出现吗?

4 个答案:

答案 0 :(得分:2)

嗯,你的代码实际上说:

$('#invite_friends_email').live('click' , function() 
{
    $("#invite_friends_email_div").dialog();

    return false;       
});

如果您查看HTML,则invite_friends_email_div在任何地方都不存在。此外,您发布的HTML(例如“输入您的朋友电子邮件地址”)也不存在于页面的任何位置。看起来你忘了从php中包含div。

答案 1 :(得分:2)

你应该把对话框div放在problem.php文件中,这样jquery选择器就可以了。

答案 2 :(得分:1)

可能有两件事情。

您的div和您的邀请朋友链接具有相同的ID,因此使用#invite_friends_email选择器可能会首先返回a标记。因为它只会返回第一个结果,所以如果它是你的标签或你的div,那就好运了。

其次,我检查了生成的HTML,我无法在任何地方看到你的div,所以看看它是否包含正确。

答案 3 :(得分:1)

我检查了你的问题,实际上如果我点击链接就不会打开对话框。如果我启动Chrome JavaScript控制台并手动输入$("#invite_friends_email").dialog(),则会打开包含链接的对话框(虽然这没有多大意义)。

基本上你正在使用的id是链接本身之一。相反,它应该是您想要在对话框中显示的div之一。也许这就是问题所在。