2013-04-27 15 views
7

मेरे पास एक जावास्क्रिप्ट फ़ंक्शन है जो यह निर्धारित करने का प्रयास करता है कि कोई div दिखाई दे रहा है और उस चर के साथ विभिन्न प्रक्रियाएं करता है। मैं किसी भी और ब्लॉक के बीच अपने प्रदर्शन को बदलकर एक तत्व दृश्यता को स्वैप करने में सफलतापूर्वक सक्षम हूं; लेकिन मैं इस मूल्य को स्टोर नहीं कर सकता ...यह पता लगाना कि तत्व दिखाई दे रहा है (जावास्क्रिप्ट)

मैंने तत्वों को विशेषता मान प्रदर्शित करने और तत्व आईडी दिखाई देने पर यह पता लगाने की कोशिश की है लेकिन न तो काम किया है। जब मैं कोशिश करता हूं .getAttribute यह हमेशा शून्य देता है; मुझे यकीन नहीं है कि क्यों मुझे पता है कि आईडी परिभाषित है और इसमें एक प्रदर्शन विशेषता है।

var myvar = $("#mydivID").is(":visible"); 
var myvar = document.getElementById("mydivID").getAttribute("display"); 

किसी भी मार्गदर्शन या सहायता बहुत सराहना की जाएगी:

यहाँ दो अलग अलग तरीकों का कोड मैंने कोशिश की है।

+4

'' display' style' संपत्ति के एक सदस्य, नहीं एक विशेषता है। – MaxArt

+0

@MaxArt: मैंने दृश्यमान का उपयोग करने का भी प्रयास किया है लेकिन यह भी काम नहीं करता है। तो अगर मैं डिस्प्ले को कॉल नहीं कर सकता क्योंकि इसकी सीएसएस संपत्ति है और जावास्क्रिप्ट विशेषता नहीं है तो मैं इसे कैसे ट्रैक करूं? –

+0

आप "दृश्यमान" को कैसे परिभाषित करते हैं? क्या व्यूपोर्ट के बाहर के तत्व भी गिना जाता है? क्या दृश्यता: छिपा हुआ 'मायने रखता है? –

उत्तर

9

प्रदर्शन एक विशेषता नहीं है, यह style विशेषता के अंदर एक सीएसएस संपत्ति है।

आप

var myvar = document.getElementById("mydivID").style.display; 

या

var myvar = $("#mydivID").css('display'); 
16

द्वारा खोजे जा रहे इस तरह का प्रयास करें:

$(function() { 
    // Handler for .ready() called. 
    if ($("#mydivID").is(":visible")) { 
     alert('Element is visible'); 
    } 
}); 

FIDDLE

कृपया jQuery फ़ाइल शामिल करना न भूलें head टैग के अंदर, के रूप में इस प्रकार है

<head> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
</head> 
+1

@ डेरेक 朕 會 功夫: क्योंकि ओपी ने स्पष्ट रूप से इस सवाल में कहा कि इस दृष्टिकोण का प्रयास किया गया था, और काम नहीं किया। –

+0

@amnotiam बहुत स्पष्ट नहीं है, प्रति कहते हैं। – SeinopSys

+1

@amnotiam - हालांकि उन्होंने कहा कि यह काम नहीं करता है, पलाश का कोड भी मुझे पूरी तरह मान्य मानता है। –

6

के एक दूसरे लेने को देखने के लिए क्या .is(":visible") jQuery में क्या कर रही है चलो, क्या हम?

यहाँ एक कड़ी है: https://github.com/jquery/jquery/blob/master/src/css.js#L529

return !jQuery.expr.filters.hidden(elem);

जहां

jQuery.expr.filters.hidden = function(elem) { 
    // Support: Opera <= 12.12 
    // Opera reports offsetWidths and offsetHeights less than zero on some elements 
    return elem.offsetWidth <= 0 && elem.offsetHeight <= 0; 
}; 

तो, यह सिर्फ ऑफसेट चौड़ाई और तत्व की ऊंचाई की जाँच कर रहा है।

जिसके अनुसार, और भी ध्यान देने योग्य है, जब jQuery अगर एक तत्व छिपा (यानी जब एक 'टॉगल' घटना को ट्रिगर की तरह), यह प्रदर्शन संपत्ति और उसके अस्तित्व पर एक जाँच करता है देखने के लिए जाँच करता है लायक डोम में। आप यह केवल जावास्क्रिप्ट तरीके से करना चाहते हैं, तो https://github.com/jquery/jquery/blob/master/src/css.js#L43

+1

ईमानदार होने के लिए, यह वास्तव में * प्रश्न का उत्तर नहीं है। – SeinopSys

+0

मुझे यकीन नहीं है कि jQuery का कौन सा संस्करण है, और मुझे देखने की परवाह नहीं है, लेकिन नवीनतम संस्करण सिर्फ इतना ही करता है - 'elem.offsetWidth <= 0 && elem.offsetHeight <= 0 || \t \t \t (! JQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css (elem, "display")) === "none"); ' – Ian

+0

अच्छा, यह कुछ अंतर्दृष्टि प्रदान करता है कि वह जो कोशिश कर रहा था वह काम नहीं कर रहा था और/या सही दृष्टिकोण था, और उसके बाद 'प्रदर्शन' संपत्ति प्राप्त करने वाले अंतर्दृष्टि प्रदान करता है, जिसे आपने पहले ही उत्तर दिया है ... तो .... –

3

आप कोशिश कर सकते हैं

window.getComputedStyle(document.getElementById("mydivID"),null).getPropertyValue('display') 
संबंधित मुद्दे