มันเป็นไปได้ที่จะสลับการแสดงผลขององค์ประกอบโดยใช้ฟังก์ชั่น.hide()
, .show()
หรือ.toggle()
?
วิธีที่คุณจะทดสอบว่าเป็นองค์ประกอบvisible
หรือhidden
?
มันเป็นไปได้ที่จะสลับการแสดงผลขององค์ประกอบโดยใช้ฟังก์ชั่น.hide()
, .show()
หรือ.toggle()
?
วิธีที่คุณจะทดสอบว่าเป็นองค์ประกอบvisible
หรือhidden
?
คำตอบ:
เนื่องจากคำถามหมายถึงองค์ประกอบเดียวรหัสนี้อาจเหมาะสมกว่า:
// Checks CSS content for display:[none|block], ignores visibility:[true|false]
$(element).is(":visible");
// The same works with hidden
$(element).is(":hidden");
มันเหมือนกับคำแนะนำของ twerntแต่ใช้กับองค์ประกอบเดียว และมันตรงกับขั้นตอนวิธีการที่แนะนำใน jQuery คำถามที่พบบ่อย
เราใช้ jQuery's is () เพื่อตรวจสอบองค์ประกอบที่เลือกด้วยองค์ประกอบอื่นตัวเลือกหรือวัตถุ jQuery ใด ๆ เมธอดนี้สำรวจไปตามองค์ประกอบ DOM เพื่อค้นหาการจับคู่ซึ่งตรงตามพารามิเตอร์ที่ส่งผ่าน มันจะกลับมาจริงถ้ามีการแข่งขันมิฉะนั้นกลับเท็จ
visible=false
และdisplay:none
; ในขณะที่วิธีการแก้ไขของโมทย์ให้ความชัดเจนแก่ผู้ลงรหัสว่าเจตนาจะตรวจสอบdisplay:none
; (ผ่านการกล่าวถึงการซ่อนและแสดงว่าdisplay:none
ไม่สามารถควบคุมได้visible=true
)
:visible
จะตรวจสอบว่าองค์ประกอบหลักปรากฏหรือไม่ตามที่ chiborg ชี้ให้เห็น
display
ทรัพย์สิน เนื่องจากคำถามเดิมนั้นมีไว้สำหรับshow()
และhide()
และพวกเขาได้ตั้งdisplay
คำตอบของฉันถูกต้อง โดยวิธีการทำงานกับ IE7 นี่คือตัวอย่างทดสอบ - jsfiddle.net/MWZss ;
คุณสามารถใช้hidden
ตัวเลือก:
// Matches all elements that are hidden
$('element:hidden')
และvisible
ตัวเลือก:
// Matches all elements that are visible
$('element:visible')
type="hidden"
เพียงหนึ่งกรณีที่สามารถเรียก: ซ่อน องค์ประกอบที่ไม่มีความสูงและความกว้างองค์ประกอบที่มีdisplay: none
และองค์ประกอบที่มีบรรพบุรุษที่ซ่อนอยู่จะมีคุณสมบัติเป็น: ซ่อน
if ( $(element).css('display') == 'none' || $(element).css("visibility") == "hidden"){
// 'element' is hidden
}
วิธีการข้างต้นไม่พิจารณาการมองเห็นของผู้ปกครอง ที่จะต้องพิจารณาผู้ปกครองเป็นอย่างดีคุณควรใช้หรือ.is(":hidden")
.is(":visible")
ตัวอย่างเช่น,
<div id="div1" style="display:none">
<div id="div2" style="display:block">Div2</div>
</div>
วิธีการข้างต้นจะพิจารณา
div2
มองเห็นได้ในขณะที่:visible
ไม่ แต่ข้างต้นอาจมีประโยชน์ในหลายกรณีโดยเฉพาะอย่างยิ่งเมื่อคุณต้องการค้นหาว่ามีข้อผิดพลาดใด ๆ divs ที่มองเห็นได้ในผู้ปกครองที่ซ่อนอยู่เพราะในเงื่อนไขดังกล่าว:visible
จะไม่ทำงาน
hide()
, show()
และtoggle()
ฟังก์ชั่นอย่างไรก็ตามในขณะที่ส่วนใหญ่ได้กล่าวไว้แล้วว่าเราควรใช้:visible
และ:hidden
หลอกชั้นเรียน
คำตอบเหล่านี้ไม่มีคำตอบที่ฉันเข้าใจว่าเป็นคำถามซึ่งเป็นสิ่งที่ฉันกำลังค้นหา"ฉันจะจัดการรายการที่มีได้visibility: hidden
อย่างไร" . ไม่มี:visible
และ:hidden
จะไม่จัดการสิ่งนี้เนื่องจากทั้งคู่มองหาการแสดงตามเอกสาร เท่าที่ฉันจะทราบได้ไม่มีตัวเลือกใดที่จะจัดการกับการมองเห็น CSS นี่คือวิธีที่ฉันแก้ไขมัน (ตัวเลือก jQuery มาตรฐานอาจมีไวยากรณ์ที่ย่อมากขึ้น):
$(".item").each(function() {
if ($(this).css("visibility") == "hidden") {
// handle non visible state
} else {
// handle visible state
}
});
visibility
ตัวอักษร How you would test if an element has been hidden or shown using jQuery?
แต่คำถามก็คือ การใช้ jQuery หมายถึง: display
คุณสมบัติ
visibility: hidden
หรือopacity: 0
ถือว่ามองเห็นได้เนื่องจากยังคงใช้พื้นที่ในเค้าโครง ดูคำตอบโดยPedro Rainhoและเอกสาร jQueryบน:visible
ตัวเลือก
จากฉันจะตรวจสอบสถานะขององค์ประกอบสลับหรือไม่
คุณสามารถกำหนดได้ว่าองค์ประกอบถูกยุบหรือไม่โดยใช้ตัวเลือก:visible
และ:hidden
var isVisible = $('#myDiv').is(':visible');
var isHidden = $('#myDiv').is(':hidden');
หากคุณเพียงแค่แสดงองค์ประกอบตามการมองเห็นคุณสามารถรวม:visible
หรือ:hidden
ในนิพจน์ตัวเลือก ตัวอย่างเช่น:
$('#myDiv:visible').animate({left: '+=200px'}, 'slow');
top:-1000px
... คิดว่ามันเป็นกรณีที่ขอบ
บ่อยครั้งที่ตรวจสอบว่ามีสิ่งใดปรากฏอยู่หรือไม่คุณกำลังจะไปข้างหน้าทันทีและทำอย่างอื่นกับมัน jQuery การโยงทำให้ง่ายขึ้น
ดังนั้นหากคุณมีตัวเลือกและคุณต้องการที่จะดำเนินการบางอย่างกับมันเฉพาะในกรณีที่มองเห็นหรือซ่อนอยู่คุณสามารถใช้filter(":visible")
หรือfilter(":hidden")
ตามด้วยการผูกมัดกับการกระทำที่คุณต้องการ
ดังนั้นแทนที่จะเป็นif
คำสั่งเช่นนี้:
if ($('#btnUpdate').is(":visible"))
{
$('#btnUpdate').animate({ width: "toggle" }); // Hide button
}
หรือมีประสิทธิภาพมากขึ้น แต่แม้กระทั่งขี้เหร่:
var button = $('#btnUpdate');
if (button.is(":visible"))
{
button.animate({ width: "toggle" }); // Hide button
}
คุณสามารถทำได้ทั้งหมดในบรรทัดเดียว:
$('#btnUpdate').filter(":visible").animate({ width: "toggle" });
:visible
เลือกตามเอกสาร jQuery :
- พวกเขามี CSS ค่าของ
display
none
type="hidden"
พวกเขาเป็นองค์ประกอบของแบบฟอร์มที่มี- ความกว้างและความสูงของพวกเขาถูกตั้งค่าเป็น 0 อย่างชัดเจน
- องค์ประกอบบรรพบุรุษถูกซ่อนดังนั้นองค์ประกอบจะไม่ปรากฏในหน้า
องค์ประกอบที่มี
visibility: hidden
หรือopacity: 0
ถือว่ามองเห็นได้เนื่องจากยังคงใช้พื้นที่ในเค้าโครง
สิ่งนี้มีประโยชน์ในบางกรณีและไม่มีประโยชน์กับผู้อื่นเพราะหากคุณต้องการตรวจสอบองค์ประกอบที่มองเห็นได้ ( display != none
) โดยไม่สนใจการมองเห็นของผู้ปกครองคุณจะพบว่าการทำเช่น.css("display") == 'none'
นั้นไม่เพียง แต่เร็วกว่าเท่านั้น
.css("visibility") == "hidden"
หากคุณต้องการที่จะตรวจสอบการแสดงผลแทนการแสดงที่คุณควรใช้:
พิจารณาบันทึกย่อ jQuery เพิ่มเติมด้วย :
เนื่องจาก
:visible
เป็นส่วนขยาย jQuery และไม่ได้เป็นส่วนหนึ่งของข้อมูลจำเพาะ CSS การสืบค้นที่ใช้:visible
จึงไม่สามารถใช้ประโยชน์จากการเพิ่มประสิทธิภาพที่มีให้โดยquerySelectorAll()
วิธีDOM ดั้งเดิม เพื่อให้เกิดประสิทธิภาพที่ดีที่สุดเมื่อใช้:visible
ในการเลือกองค์ประกอบแรกเลือกองค์ประกอบโดยใช้ตัวเลือก CSS.filter(":visible")
บริสุทธิ์แล้วการใช้งาน
นอกจากนี้หากคุณกังวลเกี่ยวกับประสิทธิภาพคุณควรตรวจสอบตอนนี้คุณเห็นฉัน ... แสดง / ซ่อนประสิทธิภาพ (2010-05-04) และใช้วิธีการอื่นเพื่อแสดงและซ่อนองค์ประกอบ
มันใช้งานได้สำหรับฉันและฉันกำลังใช้show()
และhide()
ทำให้ div ของฉันถูกซ่อน / มองเห็นได้:
if( $(this).css('display') == 'none' ){
/* your code goes here */
} else {
/* alternate logic */
}
การมองเห็นองค์ประกอบและ jQuery ทำงานอย่างไร ;
องค์ประกอบที่อาจซ่อนอยู่ด้วยdisplay:none
, หรือvisibility:hidden
opacity:0
ความแตกต่างระหว่างวิธีการเหล่านั้น:
display:none
ซ่อนอิลิเมนต์และไม่ใช้พื้นที่ใด ๆvisibility:hidden
ซ่อนองค์ประกอบ แต่ยังคงใช้พื้นที่ในเค้าโครงopacity:0
ซ่อนองค์ประกอบเป็น "การมองเห็น: ซ่อนอยู่" และยังคงใช้พื้นที่ในเค้าโครง ความแตกต่างเพียงอย่างเดียวคือความทึบช่วยให้องค์ประกอบหนึ่งโปร่งใส
if ($('.target').is(':hidden')) {
$('.target').show();
} else {
$('.target').hide();
}
if ($('.target').is(':visible')) {
$('.target').hide();
} else {
$('.target').show();
}
if ($('.target-visibility').css('visibility') == 'hidden') {
$('.target-visibility').css({
visibility: "visible",
display: ""
});
} else {
$('.target-visibility').css({
visibility: "hidden",
display: ""
});
}
if ($('.target-visibility').css('opacity') == "0") {
$('.target-visibility').css({
opacity: "1",
display: ""
});
} else {
$('.target-visibility').css({
opacity: "0",
display: ""
});
}
วิธีการสลับ jQuery ที่เป็นประโยชน์:
$('.click').click(function() {
$('.target').toggle();
});
$('.click').click(function() {
$('.target').slideToggle();
});
$('.click').click(function() {
$('.target').fadeToggle();
});
visibility:hidden
และopacity:0
เป็นองค์ประกอบที่จะยังคงตอบสนองต่อเหตุการณ์ (เช่นการคลิก) opacity:0
ด้วย ฉันเรียนรู้เคล็ดลับการสร้างปุ่มที่กำหนดเองสำหรับการอัปโหลดไฟล์
คุณสามารถทำได้โดยใช้ JavaScript ธรรมดา:
function isRendered(domObj) {
if ((domObj.nodeType != 1) || (domObj == document.body)) {
return true;
}
if (domObj.currentStyle && domObj.currentStyle["display"] != "none" && domObj.currentStyle["visibility"] != "hidden") {
return isRendered(domObj.parentNode);
} else if (window.getComputedStyle) {
var cs = document.defaultView.getComputedStyle(domObj, null);
if (cs.getPropertyValue("display") != "none" && cs.getPropertyValue("visibility") != "hidden") {
return isRendered(domObj.parentNode);
}
}
return false;
}
หมายเหตุ:
ทำงานได้ทุกที่
ใช้งานได้กับองค์ประกอบที่ซ้อนกัน
ใช้งานได้กับ CSS และสไตล์อินไลน์
ไม่ต้องการเฟรมเวิร์ก
visibility: hidden
ที่จะมองเห็นได้
.hide { display: none!important; }
ผมจะใช้คลาส CSS
การซ่อน / .addClass("hide")/.removeClass("hide")
แสดงโทรฉัน .hasClass("hide")
สำหรับการตรวจสอบการแสดงผลที่ผมใช้
เป็นวิธีที่ง่ายและชัดเจนในการตรวจสอบ / ซ่อน / แสดงองค์ประกอบหากคุณไม่ได้วางแผนที่จะใช้.toggle()
หรือ.animate()
วิธีการ
.hasClass('hide')
ไม่ตรวจสอบว่าบรรพบุรุษของผู้ปกครองนั้นถูกซ่อน (ซึ่งจะทำให้มันถูกซ่อนไว้ด้วย) คุณสามารถทำให้สิ่งนี้ทำงานได้อย่างถูกต้องโดยตรวจสอบว่า.closest('.hide').length > 0
แต่ทำไมต้องคิดค้นล้อใหม่
$('#clickme').click(function() {
$('#book').toggle('slow', function() {
// Animation complete.
alert($('#book').is(":visible")); //<--- TRUE if Visible False if Hidden
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="clickme">
Click here
</div>
<img id="book" src="https://upload.wikimedia.org/wikipedia/commons/8/87/Google_Chrome_icon_%282011%29.png" alt="" width="300"/>
ที่มา:
หนึ่งสามารถใช้hidden
หรือvisible
คุณลักษณะเช่น:
$('element:hidden')
$('element:visible')
หรือคุณสามารถลดความซับซ้อนเช่นเดียวกันกับมีดังต่อไปนี้
$(element).is(":visible")
ebdiv
style="display:none;"
ควรจะกำหนดให้ มันใช้งานได้ทั้งการแสดงและการซ่อน:
$(document).ready(function(){
$("#eb").click(function(){
$("#ebdiv").toggle();
});
});
เมื่อทำการทดสอบองค์ประกอบกับ:hidden
ตัวเลือกใน jQuery ก็ควรได้รับการพิจารณาว่าเป็นองค์ประกอบในตำแหน่งที่แน่นอนอาจจะได้รับการยอมรับในฐานะที่ซ่อนอยู่แม้ว่าองค์ประกอบเด็กของพวกเขาจะมองเห็นได้
สิ่งนี้ดูเหมือนจะค่อนข้างต่อต้านในตอนแรก - แม้ว่าการดูเอกสาร jQuery อย่างละเอียดจะให้ข้อมูลที่เกี่ยวข้อง:
องค์ประกอบสามารถพิจารณาซ่อนอยู่ได้จากหลายสาเหตุ: [... ] ความกว้างและความสูงของพวกมันถูกตั้งค่าไว้ที่ 0 [... ]
ดังนั้นนี่สมเหตุสมผลจริง ๆ แล้วเกี่ยวกับแบบจำลองกล่องและลักษณะที่คำนวณสำหรับองค์ประกอบ แม้ว่ากว้างและความสูงไม่ได้ตั้งค่าอย่างชัดเจนถึง 0 พวกเขาอาจถูกตั้งค่าโดยปริยาย
ดูตัวอย่างต่อไปนี้:
console.log($('.foo').is(':hidden')); // true
console.log($('.bar').is(':hidden')); // false
.foo {
position: absolute;
left: 10px;
top: 10px;
background: #ff0000;
}
.bar {
position: absolute;
left: 10px;
top: 10px;
width: 20px;
height: 20px;
background: #0000ff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="foo">
<div class="bar"></div>
</div>
อัปเดตสำหรับ jQuery 3.x:
ด้วย jQuery 3 พฤติกรรมที่อธิบายจะเปลี่ยนไป! องค์ประกอบจะได้รับการพิจารณาหากพวกเขามีกล่องเค้าโครงใด ๆ รวมถึงองค์ประกอบของความกว้างเป็นศูนย์และ / หรือความสูง
JSFiddle พร้อม jQuery 3.0.0-alpha1:
รหัส JavaScript เดียวกันจะมีผลลัพธ์นี้:
console.log($('.foo').is(':hidden')); // false
console.log($('.bar').is(':hidden')); // false
สิ่งนี้อาจใช้งานได้:
expect($("#message_div").css("display")).toBe("none");
ตัวอย่าง:
$(document).ready(function() {
if ($("#checkme:hidden").length) {
console.log('Hidden');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="checkme" class="product" style="display:none">
<span class="itemlist"><!-- Shows Results for Fish --></span> Category:Fish
<br>Product: Salmon Atlantic
<br>Specie: Salmo salar
<br>Form: Steaks
</div>
วิธีตรวจสอบว่ามองไม่เห็นฉันใช้หรือไม่!
:
if ( !$('#book').is(':visible')) {
alert('#book is not visible')
}
หรือต่อไปนี้เป็น sam การบันทึก jQuery selector ในตัวแปรเพื่อประสิทธิภาพที่ดีขึ้นเมื่อคุณต้องการมันหลายครั้ง:
var $book = $('#book')
if(!$book.is(':visible')) {
alert('#book is not visible')
}
การใช้คลาสที่กำหนดไว้สำหรับองค์ประกอบ "การซ่อน" นั้นง่ายและเป็นหนึ่งในวิธีการที่มีประสิทธิภาพที่สุด การสลับคลาส 'ซ่อน' ด้วยDisplay
สไตล์ 'none' จะทำงานได้เร็วกว่าการแก้ไขสไตล์นั้นโดยตรง ผมอธิบายบางนี้สวยได้อย่างทั่วถึงในคำถามกองมากเกินเลี้ยวสององค์ประกอบที่มองเห็น / div
นี่คือวิดีโอที่ให้แสงสว่างอย่างแท้จริงของ Google Tech Talk โดยวิศวกร front-end ของ Nicholas Zakas:
ตัวอย่างของการใช้การตรวจสอบที่มองเห็นสำหรับ adblocker เปิดใช้งาน:
$(document).ready(function(){
if(!$("#ablockercheck").is(":visible"))
$("#ablockermsg").text("Please disable adblocker.").show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ad-placement" id="ablockercheck"></div>
<div id="ablockermsg" style="display: none"></div>
"ablockercheck" เป็น ID ที่ adblocker บล็อก ดังนั้นการตรวจสอบถ้ามันสามารถมองเห็นได้คุณสามารถตรวจพบว่า adblocker เปิดอยู่
หลังจากทั้งหมดไม่มีตัวอย่างที่เหมาะกับฉันดังนั้นฉันจึงเขียนของตัวเอง
การทดสอบ (ไม่รองรับ Internet Explorer filter:alpha
):
a) ตรวจสอบว่าเอกสารไม่ถูกซ่อนหรือไม่
b) ตรวจสอบว่าองค์ประกอบมีศูนย์ความกว้าง / ความสูง / ความทึบหรือdisplay:none
/ visibility:hidden
ในรูปแบบอินไลน์
c) ตรวจสอบว่าศูนย์กลาง (หรือยังเพราะเร็วกว่าการทดสอบทุกพิกเซล / มุม) ขององค์ประกอบจะไม่ถูกซ่อนโดยองค์ประกอบอื่น ๆ (และบรรพบุรุษทั้งหมดเช่น: overflow:hidden
/ scroll / องค์ประกอบหนึ่งเหนืออีก) หรือขอบหน้าจอ
d) ตรวจสอบว่าองค์ประกอบมีความกว้าง / ความสูง / ความทึบdisplay:none
/ หรือการมองเห็นเป็นศูนย์: ซ่อนอยู่ในรูปแบบที่คำนวณได้ (ในบรรดาบรรพบุรุษทั้งหมด)
ทดสอบแล้ว
Android 4.4 (เบราว์เซอร์ดั้งเดิม / Chrome / Firefox), Firefox (Windows / Mac), Chrome (Windows / Mac), Opera (Windows Presto / Mac WebKit), Internet Explorer (Internet Explorer 5-11 โหมดเอกสาร + Internet Explorer 8 บน เครื่องเสมือน) และ Safari (Windows / Mac / iOS)
var is_visible = (function () {
var x = window.pageXOffset ? window.pageXOffset + window.innerWidth - 1 : 0,
y = window.pageYOffset ? window.pageYOffset + window.innerHeight - 1 : 0,
relative = !!((!x && !y) || !document.elementFromPoint(x, y));
function inside(child, parent) {
while(child){
if (child === parent) return true;
child = child.parentNode;
}
return false;
};
return function (elem) {
if (
document.hidden ||
elem.offsetWidth==0 ||
elem.offsetHeight==0 ||
elem.style.visibility=='hidden' ||
elem.style.display=='none' ||
elem.style.opacity===0
) return false;
var rect = elem.getBoundingClientRect();
if (relative) {
if (!inside(document.elementFromPoint(rect.left + elem.offsetWidth/2, rect.top + elem.offsetHeight/2),elem)) return false;
} else if (
!inside(document.elementFromPoint(rect.left + elem.offsetWidth/2 + window.pageXOffset, rect.top + elem.offsetHeight/2 + window.pageYOffset), elem) ||
(
rect.top + elem.offsetHeight/2 < 0 ||
rect.left + elem.offsetWidth/2 < 0 ||
rect.bottom - elem.offsetHeight/2 > (window.innerHeight || document.documentElement.clientHeight) ||
rect.right - elem.offsetWidth/2 > (window.innerWidth || document.documentElement.clientWidth)
)
) return false;
if (window.getComputedStyle || elem.currentStyle) {
var el = elem,
comp = null;
while (el) {
if (el === document) {break;} else if(!el.parentNode) return false;
comp = window.getComputedStyle ? window.getComputedStyle(el, null) : el.currentStyle;
if (comp && (comp.visibility=='hidden' || comp.display == 'none' || (typeof comp.opacity !=='undefined' && comp.opacity != 1))) return false;
el = el.parentNode;
}
}
return true;
}
})();
วิธีใช้:
is_visible(elem) // boolean
คุณต้องตรวจสอบทั้ง ... แสดงเช่นเดียวกับการมองเห็น:
if ($(this).css("display") == "none" || $(this).css("visibility") == "hidden") {
// The element is not visible
} else {
// The element is visible
}
หากเราตรวจสอบ$(this).is(":visible")
jQuery จะตรวจสอบทั้งสองอย่างโดยอัตโนมัติ
บางทีคุณสามารถทำอะไรเช่นนี้
$(document).ready(function() {
var visible = $('#tElement').is(':visible');
if(visible) {
alert("visible");
// Code
}
else
{
alert("hidden");
}
});
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<input type="text" id="tElement" style="display:block;">Firstname</input>
เพียงตรวจสอบการมองเห็นโดยการตรวจสอบค่าบูลีนเช่น:
if (this.hidden === false) {
// Your code
}
ฉันใช้รหัสนี้สำหรับแต่ละฟังก์ชั่น มิฉะนั้นคุณสามารถใช้is(':visible')
สำหรับการตรวจสอบการมองเห็นขององค์ประกอบ
เพราะ Elements with visibility: hidden or opacity: 0 are considered visible, since they still consume space in the layout
(ตามที่อธิบายไว้สำหรับjQuery: เลือกที่มองเห็นได้ ) - เราสามารถตรวจสอบว่าองค์ประกอบคือมันมองเห็นได้ในวิธีนี้:
function isElementReallyHidden (el) {
return $(el).is(":hidden") || $(el).css("visibility") == "hidden" || $(el).css('opacity') == 0;
}
var booElementReallyShowed = !isElementReallyHidden(someEl);
$(someEl).parents().each(function () {
if (isElementReallyHidden(this)) {
booElementReallyShowed = false;
}
});
แต่จะเกิดอะไรขึ้นถ้า CSS ขององค์ประกอบเป็นดังต่อไปนี้
.element{
position: absolute;left:-9999;
}
ดังนั้นคำตอบสำหรับคำถาม Stack Overflow วิธีการตรวจสอบว่าองค์ประกอบอยู่นอกหน้าจอควรได้รับการพิจารณาด้วยหรือไม่
สามารถสร้างฟังก์ชั่นเพื่อตรวจสอบคุณสมบัติการมองเห็น / การแสดงผลเพื่อวัดว่าองค์ประกอบนั้นแสดงใน UI หรือไม่
function checkUIElementVisible(element) {
return ((element.css('display') !== 'none') && (element.css('visibility') !== 'hidden'));
}
นอกจากนี้ยังเป็นนิพจน์เงื่อนไขแบบไตรภาคเพื่อตรวจสอบสถานะขององค์ประกอบแล้วสลับ:
$('someElement').on('click', function(){ $('elementToToggle').is(':visible') ? $('elementToToggle').hide('slow') : $('elementToToggle').show('slow'); });
$('elementToToggle').toggle('slow');
...:)
if($('#postcode_div').is(':visible')) {
if($('#postcode_text').val()=='') {
$('#spanPost').text('\u00a0');
} else {
$('#spanPost').text($('#postcode_text').val());
}
$(element).is(":visible")
งานสำหรับ jQuery 1.4.4 แต่ไม่ได้สำหรับ jQuery 1.3.2 ภายใต้อินเทอร์เน็ต & nbsp; & nbsp Explorer ที่ 8 นี้สามารถทดสอบโดยใช้ข้อมูลโค้ดการทดสอบที่เป็นประโยชน์ Tsvetomir Tsonev ของ เพียงจำไว้ว่าให้เปลี่ยน jQuery เวอร์ชันเพื่อทดสอบแต่ละอัน