2011-11-28 78 views
0

我有這樣的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。現在我可以知道點擊函數正在被調用,但不知道爲什麼對話框沒有彈出。任何想法如何讓它出現?

回答

1

兩件事情可能是這個問題。

您的div和您的邀請朋友鏈接具有相同的ID,因此使用#invite_friends_email選擇器可能會首先返回一個標籤。因爲它只會返回第一個結果,所以如果你的標籤或你的div是鍋運氣。

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

2

那麼,你的代碼實際上說:

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

    return false;  
}); 

如果您查看HTML,invite_friends_email_div不存在任何地方。此外,您發佈的HTML(例如,「輸入您的朋友電子郵件地址」)也不存在於網頁的任何位置。它看起來像你忘了包括從PHP的div。

1

我檢查了你的問題,實際上如果點擊鏈接它不會打開對話框。如果我啓動Chrome瀏覽器JavaScript控制檯並手動輸入$("#invite_friends_email").dialog(),則會打開對話框並顯示鏈接(儘管這沒有多大意義)。

基本上你使用的是鏈接本身。相反,它應該是您想要在對話框中顯示的div的一個。也許這是問題。

2

你應該把對話框div放在problem.php文件中,這樣jquery選擇器就可以使用它了。