2011-02-04 25 views
6

Bir zincir .show() gibi bir şey yaptığınızda ne olduğunu anlamıyorum. Ne de bu kodu yazdım ya da burada neler olduğunu anlamaya nasıl bir fikrim var. Dolayısıyla bu soru.show(). Parent(). Show() - Burada neler oluyor?

// Remove favorite category 
     $(".FavoriteRemove").click(function() { 
      var cat = $(this).parents(".Category");  //the parent of the clicked item is the category/bundle 
      var catid = $(this).attr("catid");   //the id tag on the clicked item is the BundleID 
      $.post($(this).attr("href"), function() { //the href tag is the post URL for adding a favorite 
       cat.remove();       //here we remove the category/bundle 

//*** WHAT IS THIS DOING? v 
      $(".Category[catid=" + catid + "]").show().parent().show(); 
//*** NO THAT UP THERE^
      if ($(".FavoriteCategories div").length == 0) 
       $(".FavoriteCategories").hide(); 
      //bindCategories(); 
     }); 
     return false; 
    }); 

Birisi bunun ne anlama geldiğini açıklayabilir mi? Hedefin, ID ile eşleşen bir öznitelik 'Kategori' sınıfı olduğunun farkındayım, ancak işlev zincirinin ne anlama geldiğini anlamıyorum.

Teşekkürler.

cevap

4
  • ilk show()(docs) sınıf Category ve değişkenin değeri ile catid niteliğiyle elemanı.
  • Ardından, parent()(docs) yöntemini kullanarak üst öğesine geçin.
  • Daha sonra üstte show()(docs).

"Gösterilen" block gibi, başlangıç ​​(veya varsayılan) değerine none onun display stil özelliğini ayarlayarak demektir.

3

JavaScript'te, bir değişkenin değerini atamadan bir işlev çağrısının doğrudan değerini "kullanabilirsiniz". Here is a stripped down example:

senin yöntem çağrısına Şimdi
var john = { 
    me: function() { 
     alert('...John'); 
    } 
} 

var foo = { 
    call: function() { 
     alert('You called..'); 
     return this;  // <- note that an object is returned  
    },      // (in this case foo itself but could be any object) 

    callSomeoneElse: function() { 
     alert('You called..'); 
     return john;  // <- note that an object is returned 
    }, 

    me: function() { 
     alert('...me'); 
    } 
} 

foo.call().me() 
foo.callSomeoneElse().me() 

:

Eğer

$(selector).show() 

sonra seçilen elemanlar gösterilir varsa. show, seçilen öğelerin kümesini tekrar döndürür ( $(selector) ile seçilen aynı öğeler). Bu, onlardan başka bir yöntem çağırmamıza izin verir: parent(), bu öğelerin ana düğümlerini seçer (döndürür) (böylece farklı bir kümeye sahibiz) ve ikinci show() bu yeni (ana) kümede çalışır (ve üst kümeyi döndürür).

Yani

$(selector).show().parent().show() 

seçilmiş elemanları ve velilerine gösterecektir.


bütün kavramı fluent interface olarak adlandırılır ve method chaining yoluyla elde edilir.

+0

+1; Sanırım buradaki karışıklığın kaynağı bu. –

+0

+1 akıcı arayüz – RichardTheKiwi

+0

Çok güzel bir açıklama. Benimkinden çok daha iyi.+1 – user113716

2
$(".Category[catid=" + catid + "]").show().parent().show(); 

bir sınıfa Category ve değişken CatID bir CatID dizi eleman (lar) (görünür hale) gösterir ve bu üst elemanı gösterir:

<div> 
    <span class="Category" catid="1"></span> 
</div> 

olarak Bu durumda hem açıklık hem de div gösterecektir. Akıcı arayüzden bahsetmek için

+0

sade ve basit ... çok sert değil sert ... – jhurtado