0

私はphpでFacebookのようなソーシャルウェブサイトを開発しています。2つのリンク、つまり受信トレイ内のすべてのメッセージの右下隅に、ユーザーへのメッセージを表示するためのページがありますreplydelete私の問題は、返信リンクをクリックすると、ユーザーが返信を送信者に送り返すことができる別のhtmlブロックが表示されるはずです。このようなコードを記述しました。

<div class="msgutil">
   <a href="" id="reply" onclick="return post_reply()" >reply</a>//this method does'nt works

   <a href="delete_message.php?msg_id=<?php echo $row_msg_id;?>">delete</a> //dont check this
</div><!--end msgutil-->

このようにpost_reply()内にhtmlドキュメントを挿入しました

  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
 </script>

<script type="text/javascript">
function post_reply()
 {
    $("<form id="msgreply" name="msgreply" action="#"> <textarea name="replyfield"    id="replyfield"></textarea> </form>").insertBefore("#reply");
return true;
 }
 </script>

なぜ機能しないのかわかりません。

4

2 に答える 2

3

二重引用符で作成された文字列で二重引用符を使用しています。文字列を終了して再開し続けるため、これを行うことはできません。

一重引用符で囲みます。

$('<form id="msgreply" name="msgreply" action="#"> <textarea name="replyfield" id="replyfield"></textarea></form>').insertBefore("#reply");
//^                                                                                                              ^

または二重引用符をエスケープします。

$("<form id=\"msgreply\" name=\"msgreply\" action=\"#\"> <textarea name=\"replyfield\" id=\"replyfield\"></textarea></form>").insertBefore("#reply");
//          ^         ^       ^         ^         ^  ^                  ^           ^     ^           ^

次のHTMLを使用することもできます。

<div class="msgutil">
   <a href="#" id="reply">reply</a>
   <a href="delete_message.php?msg_id=<?php echo $row_msg_id;?>">delete</a>
</div><!--end msgutil-->

および次のJavaScript:

$(document).ready(function() {
    $("#reply").click(function(e) {
        $('<form id="msgreply" name="msgreply" action="#"> <textarea name="replyfield" id="replyfield"></textarea></form>').insertBefore("#reply");
        e.stopPropagation();
        e.preventDefault();
    });
});​

同じ結果を得るには。

これがJSFiddleのデモです。

于 2012-12-27T10:38:36.983 に答える
0

私はあなたが次のようにjQueryを使用してより良いアプローチに従うべきだと思います:

HTML:

<div class="msgutil">
   <a href="" id="reply">reply</a>

   <a href="delete_message.php?msg_id=<?php echo $row_msg_id;?>">delete</a>
</div><!--end msgutil-->​

jQuery:

$("#reply").click(function(e){
    e.preventDefault();
    var formHtml = '<form id="msgreply" name="msgreply" action="#"> <textarea name="replyfield"    id="replyfield"></textarea> </form>';
    $(this).before(formHtml);
});

デモ </p>

于 2012-12-27T10:45:14.937 に答える