2016-04-11 19 views
0

Bu davranış için varsayılan seçeneklerinizi iletmenize izin veren bir sekme eklentisi kullanıyorum. .js dosyası içindejQuery: Değerleri başkalarını etkilemeden diziye geçirme

$('#responsiveTabsDemo').responsiveTabs({ 
startCollapsed: 'accordion', 
setHash: true 
}); 

:

var defaults = { 

     active: null, 
     event: 'click', 
     disabled: [], 
     collapsible: 'accordion', 
     startCollapsed: false, 
     rotate: false, 
     setHash: false, 
     animation: 'default', 
     animationQueue: false, 
     duration: 500, 
     scrollToAccordion: false, 
     scrollToAccordionOnLoad: true, 
     scrollToAccordionOffset: 0, 
     accordionTabElement: '<div></div>', 
     activate: function(){}, 
     deactivate: function(){}, 
     load: function(){}, 
     activateState: function(){}, 
     classes: { 
      tabStyle: 'j', 
      stateDefault: 'j-tabs-state-default', 
      stateActive: 'j-tabs-state-active', 
      stateDisabled: 'j-tabs-state-disabled', 
      stateExcluded: 'j-tabs-state-excluded', 
      container: 'j-tabs', 
      ul: 'j-tabs-nav', 
      tab: 'j-tabs-tab', 
      anchor: 'j-tabs-anchor ', 
      panel: 'j-tabs-panel', 
      accordionTitle: 'j-tabs-accordion-title ' 
     } 
    }; 

Yani, sayfadaki Bunlardan herhangi birini belirterek, ben varsayılan herhangi üzerine yazabilirsiniz. Ancak, classes için bazı varsayılan değerlerin üzerine yazmak istiyorum.

$('#responsiveTabsDemo').responsiveTabs({ 

    startCollapsed: 'accordion', 
    setHash: true, 
    classes: { 
     tabStyle: 'r' 
    } 

}); 

... ama bu classes için tüm diğer değerleri kaldırır: denedim.

Diğerlerini silmeden bu diziye yalnızca bir değer nasıl geçebilirim?

cevap

1

Orijinal eklentinin, 2 nesneyi birleştirmek için jQuery.extend() kullanıyor gibi görünüyor, ancak yinelenen kopya yapmıyor.

this.options = $.extend(true, {}, defaults, options); 

Çatal GitHub üzerinde proje ve yazara değişikliği ile bir çekme isteği göndermek: Yani temelde, bunun senle, eklenti this line of code değiştirerek gerekenleri elde edebilirsiniz. İhtiyacınız olan işlevselliği, artı açık kaynak topluluğuna biraz fayda sağlayın :)

+0

Aynı çözüm için geldi, [bu yanıt] için krediler (http://stackoverflow.com/questions/10892222/is-there-are-proper-way-to-extend-a-nested-properties-in-jquery#10892275). – skobaljic

1

Tek bir sınıf eklemenize izin verecek işlevselliğe sahip olup olmadığını (varsayılan değerlere ek olarak) görmek için bu özel eklentinin belgelerini kontrol etmenizi öneririz. Aksi halde, açıkça özel sınıf olarak hem de varsayılan içinde geçebileceği:

classes: { 
     tabStyle: 'r', 
     stateDefault: 'j-tabs-state-default', 
     stateActive: 'j-tabs-state-active', 
     stateDisabled: 'j-tabs-state-disabled', 
     stateExcluded: 'j-tabs-state-excluded', 
     container: 'j-tabs', 
     ul: 'j-tabs-nav', 
     tab: 'j-tabs-tab', 
     anchor: 'j-tabs-anchor ', 
     panel: 'j-tabs-panel', 
     accordionTitle: 'j-tabs-accordion-title ' 
} 

the source yüzeysel bir bu özelliğe sahip görünmüyor, ancak açık kaynak olduğu gibi kendi içinde eklenti görünüyor Böylece, bu kadar isteseniz muhtemelen bunu kolayca genişletebilirsiniz.

+0

Teşekkür ederiz. Evet, bu eklenti buna izin vermez, bu yüzden kendimi fudge etmeye çalışıyorum. Tüm varsayılanları kendimden açıkça geçmek zorunda kalmamayı deniyordum, ama eğer yapmam gerekiyorsa, o zaman bende var. – JROB

İlgili konular