2011-02-04 17 views
6

मुझे समझ में नहीं आता कि जब आप .show() की एक श्रृंखला करते हैं तो क्या होता है। न ही मैंने यह कोड लिखा है या यहां क्या हो रहा है यह जानने का विचार है। इसलिए यह सवाल है।शो()। अभिभावक()। शो() - यहां क्या चल रहा है?

// 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; 
    }); 

क्या कोई इसका अर्थ बता सकता है? मुझे पता है कि लक्ष्य आईडी श्रेणी से मेल खाने वाली विशेषता के साथ वर्ग 'श्रेणी' है लेकिन मुझे समझ में नहीं आता कि कार्यों की श्रृंखला का क्या अर्थ है।

धन्यवाद।

उत्तर

4
  • पहले show()(docs) वर्ग Category, और दिए गए चर के मूल्य के साथ catid विशेषता के साथ तत्व।
  • फिर parent()(docs) विधि का उपयोग कर अपने माता-पिता के पास जायें।
  • फिर show()(docs) अभिभावक।

"दिखा रहा है" block की तरह अपनी प्रारंभिक (या डिफ़ॉल्ट) मूल्य के लिए none से अपने display शैली की संपत्ति की स्थापना करने का मतलब है,।

3

जावास्क्रिप्ट में आप एक चर के लिए मूल्य निर्दिष्ट किए बिना फ़ंक्शन कॉल के वापसी मूल्य को सीधे "उपयोग" कर सकते हैं। Here is a stripped down example:

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

अब आप अपने विधि कॉल करने के लिए:

यदि आप

$(selector).show() 

तो चयनित तत्वों दिखाया जाएगा है। show फिर से चयनित तत्वों का सेट लौटाता है ($(selector) द्वारा चयनित तत्व)। यह हमें उन पर एक और विधि कॉल करने की अनुमति देता है: parent() इन तत्वों के अभिभावक नोड्स का चयन करता है (इसलिए हमारे पास अब एक अलग सेट है) और दूसरा show() इस नए (पैरेंट) सेट पर संचालित होता है (और पैरेंट सेट देता है)।

तो

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

चयनित तत्वों और उनके माता पिता को दिखायेगी।


पूरी अवधारणा fluent interface कहा जाता है और method chaining के माध्यम से हासिल की है।

+0

+1; मुझे लगता है कि यह भ्रम का स्रोत है। –

+0

+1 धाराप्रवाह इंटरफेस – RichardTheKiwi

+0

बहुत अच्छा स्पष्टीकरण। मेरी तुलना में बहुत अधिक गहन।+1 – user113716

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

यह दिखा देंगे एक वर्ग Category और चर CatID करने के लिए एक CatID सेट के साथ तत्व (रों) (सामने प्रस्तुत करें), और यह पेरेंट तत्व दिखाएगा:

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

में इस मामले में यह अवधि और div दोनों दिखाएगा। धाराप्रवाह इंटरफ़ेस का उल्लेख करने के लिए

+0

सादा और सरल ... बहुत गहरा मुश्किल नहीं ... – jhurtado

संबंधित मुद्दे