0

編集

JQUERY-AJAXリクエストコード:

<script type="text/javascript">
$(document).ready(function(){
$(".form").submit( function(e) {
    e.preventDefault();
    var form = $(this);
    var div_add_comment = $(form).parent();
    var div_comments = $(div_add_comment).parent();
    $.ajax({
        type: "POST",
        data: $(form).serialize(),
        url: "includes/comment.php",
        success: function(msg){
            $(div_comments).html(msg);
        }
    });
    return false;
});
});
</script>

JQUERY SHOW ALL-COLLAPSE COMMENTS CODE

<script type="text/javascript">
$(document).ready(function(){
$('.see_all').click(function(){
    var thisItem = $(this);
    thisItem.parent().find('#comment2').slideDown('fast');
    thisItem.parent().find('.collapse').css('display','inline-block');
    thisItem.css('display','none');
    return false;
}); 

$('.collapse').click(function(){
     var thisItem = $(this);
     thisItem.parent().find('#comment2').slideUp('fast');
     thisItem.css('display','none');
     thisItem.parent().find('.see_all').css('display','inline-block');
     return false;
})
})
</script>

JQUERYはフォーカス時にデフォルト値のテキストを削除します-TEXTAREA

<script type="text/javascript">
$(document).ready(function(){
var Input = $('textarea[name=comment]');
var default_value = Input.val();

$(Input).focus(function() {
    if($(this).val() == default_value)
    {
         $(this).val("");
    }
}).blur(function(){
    if($(this).val().length == 0)
    {
        $(this).val(default_value);
    }
});
})
</script>

他に何か必要な場合はお知らせください。コードをコピーしてこれらの投稿でフォーマットするのに最も時間がかかります。

編集終了

私は奇妙な小さな問題を抱えています。ページのコメントセクションからデータを転送するjquery-ajax関数を作成しました。このページには、各ユーザー投稿の下にこのフォームのインスタンスがあります。したがって、このページには、ソーシャルネットワークのように、投稿ごとにX個のコメントが含まれるX個の投稿があります。私のajaxリクエストはデータを完全に送信、受信、表示しますが、内部の要素で呼び出された他の2つのjquery関数があり、ajax関数がhtmlを返した後は機能しなくなります。ajax関数の影響を受けない他のすべてのものはまだ機能します。ajax関数からの応答htmlをチェックして再チェックしましたが、これは標準のコメント後のインスタンスのhtmlと同じです。

何を見たいのか、質問があれば教えてください。

ありがとう、あなたの助けはいつもありがたいです!

4

2 に答える 2

2

要素が存在する必要がないように、jQuery関数をバインドしてください。

$('ul').on('click', 'li', function(){ /* do something */ });

これは、関数のバインド後に追加されたLIで実行されます。

あなたの場合、コメントセクションの親にバインドし、クリック動作を持つ要素をターゲットにします。

$('.comments')
    .on('click', '.see_all', function(){...})
    .on('click', '.collapse', function(){...})
    .on('focus', 'textarea[name=comment]', function(){...})
    .on('blur', 'textarea[name=comment]', function(){...})
于 2013-02-13T21:13:48.510 に答える
0

フォームから$()を削除してみてください。

あなたはこれを持っています:

var form = $(this);
    var div_add_comment = $(form).parent();
    var div_comments = $(div_add_comment).parent();

これである必要があります:

var form = $(this),
    div_add_comment = form.parent(),
    div_comments = $(div_add_comment).parent();

var form = $(this);を宣言したので フォームをラップする必要はありません...現在の方法は$((form))と同等です

これで問題が解決するかどうかはわかりませんが、$(this)から子を生成しているため、jQueryがこれにハングアップしている可能性があります。

于 2013-02-13T21:44:35.473 に答える