Другие функции jquery НЕ работают после успешной функции ajax

ИЗМЕНИТЬ

КОД ЗАПРОСА 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 ПОКАЗАТЬ ВСЕ - СВЕРНУТЬ КОММЕНТАРИИ КОД

<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 отлично отправляет, получает и отображает данные, НО у меня есть две другие функции jquery, вызываемые для элементов внутри, которые больше не работают после того, как функция ajax возвращает html. Все остальные, на которые не воздействовала функция ajax, ВСЕ ЕЩЕ РАБОТАЮТ. Я проверил и перепроверил HTML-код ответа из функции ajax, и он идентичен HTML-коду стандартного экземпляра пост-комментария.

Пожалуйста, дайте мне знать, что вы хотели бы видеть или если у вас есть вопросы.

Спасибо, ваша помощь всегда ценна!


person Bill Chambers    schedule 13.02.2013    source источник
comment
Звучит как проблема с привязкой событий - опубликуйте свой код   -  person AlienWebguy    schedule 14.02.2013
comment
ок, AlienWebguy, дай мне минутку.   -  person Bill Chambers    schedule 14.02.2013
comment
Поделитесь фрагментами кода... У меня была похожая проблема в прошлом, которую я исправил, но я не могу сказать, есть ли у вас такая же проблема, но я не вижу кода.   -  person defaultNINJA    schedule 14.02.2013
comment
О чем говорят ваши заголовки?   -  person Scott Sword    schedule 14.02.2013
comment
ОК, ребята, опубликуйте мой код jquery выше, и снова проблема заключается в том, что после отправки запроса ajax две другие функции jquery для удаления значения по умолчанию для текстовой области и функциональности комментариев show-collapse больше не работают, как они это делают в другом сообщении -комментировать экземпляры на странице.   -  person Bill Chambers    schedule 14.02.2013
comment
Является ли это представителем архитектуры вашего приложения? У вас есть эти фрагменты, живущие в отдельных тегах сценария и заявлениях о готовности документа? Это может быть проблема с порядком загрузки. Попробуйте сгруппировать их вместе в одном готовом документе и пометить, а затем изолировать части кода пользовательского интерфейса, чтобы попытаться понять, что происходит.   -  person Scott Sword    schedule 14.02.2013


Ответы (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(){...})
person ArrayKnight    schedule 13.02.2013
comment
Я разместил некоторый код выше, не могли бы вы рассказать о своем отношении к моему редактированию? - person Bill Chambers; 14.02.2013
comment
Хорошо, я попробую ArrayKnight, это имеет смысл, я дам вам знать. - person Bill Chambers; 14.02.2013
comment
ArrayKnight, спасибо, с вашей помощью я смог получить нужный мне результат! Я очень ценю человека. Проверка как принятая. - person Bill Chambers; 14.02.2013

Попробуйте удалить $() из формы.

У вас есть это:

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))

Не уверен, что это решит вашу проблему, но jQuery может зацикливаться на этом, так как вы порождаете детей из $(this).

person Scott Sword    schedule 13.02.2013
comment
попробовал это, он все еще работает, как и раньше, но все еще имеет ту же проблему. - person Bill Chambers; 14.02.2013