2013-07-28 1 views
0
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script> 
var commentUrl = 'comment.jsp'; 

$('.privateTimeline').click(function() { 
$.ajax({ 
url: commentUrl, 
type:'post', 
    data:{ 
     no : $(this).find('.no').text() // working! 
}, 
success:function(data){ 
    if($(this).children('.comment').is(':hidden')) { // not working! 
    $(this).find('.comment').slideDown(400); // not working! 
    $(this).find('.comment').html(data); // not working! 
} 
else { 
    $(this).find('.comment').slidUp(400); // not working! 
    } 
}); 
}) 

</script> 
  1. Не знаю, хорошо ли причина, почему этот код не работает.
  2. Я хочу выбрать privateTimeline для дочернего класса, так что сделайте событие.
  3. не работает в успехе функция часть, но $ (этот) работает в части данных.

ответ

1

Это должно работать:

var $target =$('.privateTimeline'); 
$target.click(function() { 
    $.ajax({ 
     url: commentUrl, 
     type:'post', 
     data:{ 
      no : $(this).find('.no').text() // working! 
     }, 
     success:function(data){ 
      if($target.children('.comment').is(':hidden')) { // not working! 
       $target.find('.comment').slideDown(400); // not working! 
       $target.find('.comment').html(data); // not working! 
      } 
      else { 
       $target.find('.comment').slidUp(400); // not working! 
      } 
     } 
    }); 
}); 

В success:function(data){}, $(this) оленья кожа пункт $('.privateTimeline') больше , Таким образом, вы получаете доступ к нему с помощью своего уникального селектора.

Кроме того, у вас были закрывающие скобки, поэтому я исправил это для вас.

+1

Выполнение этого будет выполняться через селектор много раз. Вы можете сохранить его в переменной для оптимизации, 'var $ pTimeline = $ (". PrivateTimeline ")', а затем использовать эту переменную. – mash

+0

Да, спасибо Мэш. Я отредактировал его. – DoubleCute

1

Ваш контекст изменился внутри .success() обратного вызова, так this относится к чему-то другому, чем объект JQuery вы ожидаете его.

Вы можете сделать что-то подобное, чтобы решить:

var _this = this; 
... 
, success(function(){ 
    $(_this).find(".yourClass").yourFunc() 
}); 

Или:

... 
, success((function() { 
    $(this).find(".yourClass").yourFunc(); 
}).bind(this));