2017-08-23 9 views
0

私はキーアップでslideDown divにします。しかし、投稿で$(this)の選択を使用したり、メソッドを取得しても機能しません。それは外です。しかし、内部のポストは動作しません。getとpostで動作しない `this`を使用する

これは私のコードです。このコードで

$('.search').keyup(function() { 
    var ID = $(this).parent().find('.hiddenid').val(); 
    var Search = $(this).val(); 
    if (Search == "") { 
     $(this).parent().next().slideUp('fast'); 
    } else { 
     $.get('getphone.php', { 
      ID: ID, 
      Search: Search 
     }, function(D) { 
      $(this).parent().next().html(D).slideDown(1000); 

     }); 
    } 

}); 

、私はそれはかつて私はそれが動作しません$(this)使用Down.butにスライドするクラスの検索」の親の次を取得しようとしています。

+0

[$(this)AJAXの成功の中で動作しない可能性があります](https://stackoverflow.com/questions/6394812/this-inside-of-ajax-success-not-working) - ['$。 get'](https://api.jquery.com/jquery.get/)は '$ .ajax'の省略形ですので、この質問はあなたが探している答えを提供します。 – Santi

答えて

1
var $this= $(this); 

説明:あなたの他のポイントの内部これはスコープの問題である$(この)コマンドを別の要素

$('.search').keyup(function(){ 
    var $this= $(this); 
    var ID = $this.parent().find('.hiddenid').val(); 
    var Search = $this.val();    
    if(Search == ""){ 
     $this.parent().next().slideUp('fast'); 
    } 
    else{ 
     $.get('getphone.php',{ID:ID,Search:Search},function(D){ 
      $this.parent().next().html(D).slideDown(1000); 
      }); 
     }    
}); 
+0

わずかな修正として、 '$ .get'の中の' $(this) 'は別の*" element "*を指すのではなく、AJAX呼び出しの' jqXHR'オブジェクトを指しています。詳細については、[この回答](https://stackoverflow.com/questions/6394812/this-inside-of-ajax-success-not-working)を参照してください。 – Santi

+1

@サンティこの説明をありがとう –

0

に$(これは)動作しない理由は、それは別の関数の中にあります。一般的に、これは他の答えに示されているように$ thisが解として使われます。しかし、この場合、単にhtmlとしてurlからの出力を追加したいと考えると、load関数の助けを借りてget関数を単純化することができるので、追加の関数を持たないので$ thisは必要ありません宣言された。

else { 
    $(this).parent().next().load('getphone.php',{ID:ID,Search:Search}) 
          .slideDown(1000); 
} 

残りのコードは元のコードと同じです。 slideDownオプションをロード後にのみ呼び出す場合は、コールバックとして使用できます。

else { 
    $(this).parent().next().load('getphone.php',{ID:ID,Search:Search}, 
          function(){ 
           $(this).slideDown(1000) 
          }); 

} 

もう一度これはあなたの特定の場合にのみ役立ちます。

+0

ありがとう、最初の答えが働く.. – agbeko

+0

はいうまくいくはずです。私が言及したように、その答えはこの共通の問題を一般的に解決する一般的な推奨方法です。また将来の変更のために、その答えに固執する必要があります。この答えは、あなたの特定のケースのほんの少しだけ単純なものです。 –

関連する問題