2012-02-13 22 views
123

मैं इसjQuery शो() फ़ंक्शन इनलाइन ब्लॉक प्रदर्शित करता है। कैसे? ब्लॉक:

function switch_tabs(obj) 
{ 
    $('.tab-content').hide(); 
    $('.tabs a').removeClass("selected"); 
    var id = obj.attr("rel"); 

    $('#'+id).show(); 
    obj.addClass("selected"); 
} 

शो समारोह की तरह कुछ कोड प्रदर्शन कहते है। लेकिन मैं डिस्प्ले जोड़ना चाहता हूं: ब्लॉक के बजाय इनलाइन-ब्लॉक।

क्या कोई मेरी मदद कर सकता है? धन्यवाद

+1

आपको कुछ और विवरण प्रदान करने की आवश्यकता होगी। यह एक त्वरित परीक्षण में मेरे लिए काम करता है: http://jsfiddle.net/DD3Sf/। – Gijs

+0

@gijs क्षमा करें, अब यह काम कर रहा है। मुझे लगता है कि यह कुछ कैश समस्या है। आपके समय के लिए धन्यवाद – user1091558

उत्तर

169

के बजाय show, छिपाने के लिए और सामग्री को दिखाने के सीएसएस का उपयोग करने का प्रयास करें।

function switch_tabs(obj) { 
    $('.tab-content').css('display', 'none'); // you could still use `.hide()` here 
    $('.tabs a').removeClass("selected"); 
    var id = obj.attr("rel"); 

    $('#' + id).css('display', 'inline-block'); 
    obj.addClass("selected"); 
} 
+71

यह स्पष्ट प्रतीत हो सकता है, लेकिन यदि आप अभी भी 'शो' ('$ (" # आईडी ") के समय पहलू का उपयोग करना चाहते हैं। (500)') दिखाएं, बस' css' फ़ंक्शन को इसमें संलग्न करें : '$ (" # आईडी ")। शो (500)। सीएसएस (" डिस्प्ले "," इनलाइन-ब्लॉक ");' – BenR

+1

+1 बेन मुझे दिखा रहा है कि मैं उन्हें एक साथ जोड़ सकता हूं! – kyle

+2

मैं इसे एक कदम आगे ले जाऊंगा और सीएसएस कक्षाओं का उपयोग करके सभी छुपा/दिखा रहा हूं, jQuery नहीं। '' $ ('टैब-सामग्री')। एडक्लास ('छुपा'); (...) $ ('#' + id) .removeClass ('छुपा'); '' सीएसएस में: '' .hidden {display: none! important} '' –

2

आप उपयोग कर सकते हैं animate शो के insted/छिपाने

कुछ इस तरह:

function switch_tabs(obj) 
{ 
    $('.tab-content').animate({opacity:0},3000); 
    $('.tabs a').removeClass("selected"); 
    var id = obj.attr("rel"); 

    $('#'+id).animate({opacity:1},3000); 
    obj.addClass("selected"); 
} 
30

.show() का उपयोग करने के बाद सीएसएस संपत्ति को सेट करना चाहिए। हो सकता है कि आप अपने एचटीएमएल पेज पर गलत तत्व को लक्षित कर रहे हों।

$('#foo').css('display', 'inline-block'); 

लेकिन अगर आप .show(), .hide() के किसी भी प्रभाव उपयोग नहीं कर रहे क्यों आप उन सीएसएस गुण मैन्युअल रूप से सेट नहीं है की तरह है:

$('#foo').css('display','none'); 
$('#foo').css('display','inline-block'); 
+3

ध्यान दें कि jquery show/hide/टॉगल पिछले प्रदर्शन मानों को पुनर्स्थापित करता है। तो यदि आप इसे jquery से छुपाते हैं, तो कॉलिंग शो काम करेगा। –

+0

"आपके द्वारा उपयोग किए जाने के बाद सीएसएस प्रॉपर्टी सेट करना .show() को काम करना चाहिए।" शो() का उपयोग करने का क्या मतलब है यदि आप अभी भी सीएसएस को मैन्युअल रूप से अपडेट करने जा रहे हैं? – JSON

5

Razz के समाधान .hide() और .show() तरीकों के लिए काम करेंगे, लेकिन कार्य नहीं करेगा .toggle() विधि के लिए।

परिदृश्य के आधार पर, एक सीएसएस वर्ग .inline_block { display: inline-block; } और $(element).toggleClass('inline_block') पर कॉल करने से मेरे लिए समस्या हल हो जाती है।

-5

चयन करने के लिए सबसे अच्छा तरीका जोड़ना है! महत्वपूर्ण प्रत्यय।

उदाहरण:

#selector{ 
    display: inline-block !important;     
} 
+3

यह रोक नहीं है। Hide()? –

+0

! महत्वपूर्ण विकल्प केवल जरूरी है जब कोई अन्य विकल्प न हो। मेरी राय में इस समस्या से संपर्क करने का सही तरीका नहीं है जब इसे बेहतर jQuery कोड के साथ ठीक किया जा सकता है। – Brandon

+4

* महत्वपूर्ण * चीज़ 'याद रखना' के बारे में याद रखना महत्वपूर्ण है कि इसका उपयोग न करने के लिए * महत्वपूर्ण * है। – user1728278

2

इस प्रयास करें:

$('#foo').show(0).css('display','inline-block'); 
+0

इसमें 'शो() 'व्यर्थ है। यह '$ ('# foo') जैसा है। सीएसएस ('डिस्प्ले', 'इनलाइन-ब्लॉक');' – Liam

+0

@ लीम व्यर्थ नहीं है। आप अन्य अद्वितीय 'शो' विकल्पों तक पहुंच प्राप्त करने के लिए 0 को आसानी से बदलने या संशोधित करने के लिए इसे बदल सकते हैं। – JSideris

5

मैंने किया था कि

function showPanels() { 
    $('.panels').show("slow"); 
    $('.panels').css('display','inline-block'); 
} 

काम करता है एक आकर्षण की तरह।

+7

क्या यह एक उत्तर या एक पावती है ..? – NREZ

6

सीएसएस का उपयोग करें() सिर्फ शो() या fadein() इस तरह के बाद:

$('div.className').fadeIn().css('display', 'inline-block'); 
+0

यह मेरी राय में सही जवाब है! –

0

वास्तव में jQuery बस 'प्रदर्शन' संपत्ति के मूल्य को साफ करता है, और 'ब्लॉक' के लिए यह निर्धारित नहीं करता है (jQuery.showHide की आंतरिक कार्यान्वयन को देखने के()) -

function showHide(elements, show) { 
    var display, elem, hidden, 

...

  if (show) { 
      // Reset the inline display of this element to learn if it is 
      // being hidden by cascaded rules or not 
      if (!values[index] && display === "none") { 
       elem.style.display = ""; 
      } 

...

 if (!show || elem.style.display === "none" || elem.style.display === "") { 
      elem.style.display = show ? values[index] || "" : "none"; 
     } 
    } 

कृपया ध्यान दें कि आप $ .fn.show()/$। Fn.hide() को ओवरराइड कर सकते हैं; छुपाते समय मूल रूप से मूल प्रदर्शन को संग्रहीत करना (उदा। एक विशेषता के रूप में या $।डेटा()); और फिर दिखाते समय इसे फिर से लागू करना।

इसके अलावा, सीएसएस महत्वपूर्ण का उपयोग कर! शायद यहां काम नहीं करेगा - क्योंकि स्टाइल इनलाइन सेट करना आमतौर पर किसी भी अन्य नियम

2

मुझे लगता है कि आप एनीमेशन दोनों चाहते हैं और अंत में डिस्प्ले प्रॉपर्टी सेट करना चाहते हैं। उस मामले में आप बेहतर रूप में नीचे

$("#my_obj").show(400,function() { 
    $("#my_obj").css("display","inline-block") 
}) ; 

से पता चला इस तरह आप दोनों परिणाम प्राप्त होगा show() कॉलबैक का उपयोग करें।

+0

यह सही नहीं है, पूरी एनीमेशन चलाने के बाद ही आप 'इनलाइन-ब्लॉक' मोड के साथ समाप्त हो जाएंगे।इसका मतलब है कि यह 400 एमएमएस के बाद 'ब्लॉक' और 'इनलाइन-ब्लॉक' के बीच "पॉप" होगा। –

0

सबसे अच्छा .लेट यह माता-पिता display :inline-block है या माता-पिता div जोड़ें जो सीएसएस में केवल display :inline-block है।

1
<style> 
.demo-ele{display:inline-block} 
</style> 

<div class="demo-ele" style="display:none">...</div> 

<script> 
$(".demo-ele").show(1000);//hide first, show with inline-block 
<script> 
+0

स्वीकार्य उत्तर के सामने कोई लाभ? – emecas

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