ใน jQuery มี.hide()
และ.show()
วิธีการที่ตั้งdisplay: none
ค่าการตั้งค่าCSS
มีฟังก์ชั่นเทียบเท่าที่จะตั้งvisibility: hidden
ค่าหรือไม่
ฉันรู้ว่าฉันสามารถใช้.css()
แต่ฉันชอบฟังก์ชั่นบางอย่างเช่น.hide()
หรือดังนั้น ขอบคุณ
ใน jQuery มี.hide()
และ.show()
วิธีการที่ตั้งdisplay: none
ค่าการตั้งค่าCSS
มีฟังก์ชั่นเทียบเท่าที่จะตั้งvisibility: hidden
ค่าหรือไม่
ฉันรู้ว่าฉันสามารถใช้.css()
แต่ฉันชอบฟังก์ชั่นบางอย่างเช่น.hide()
หรือดังนั้น ขอบคุณ
คำตอบ:
คุณสามารถสร้างปลั๊กอินของคุณเองได้
jQuery.fn.visible = function() {
return this.css('visibility', 'visible');
};
jQuery.fn.invisible = function() {
return this.css('visibility', 'hidden');
};
jQuery.fn.visibilityToggle = function() {
return this.css('visibility', function(i, visibility) {
return (visibility == 'visible') ? 'hidden' : 'visible';
});
};
หากคุณต้องการที่จะโอเวอร์โหลด jQuery ดั้งเดิมtoggle()
ซึ่งฉันไม่แนะนำ ...
!(function($) {
var toggle = $.fn.toggle;
$.fn.toggle = function() {
var args = $.makeArray(arguments),
lastArg = args.pop();
if (lastArg == 'visibility') {
return this.visibilityToggle();
}
return toggle.apply(this, arguments);
};
})(jQuery);
toggle()
ซึ่งสามารถทำลายสคริปต์อื่น ๆ หากคุณต้องการคุณสามารถเพิ่มอาร์กิวเมนต์พิเศษtoggle()
เพื่อระบุว่าควรสลับvisibility
หรือdisplay
ไม่ ฉันจะใช้แบบกำหนดเองในตัวอย่างสุดท้ายของฉันอย่างไรก็ตาม :)
show
(ความเร็ว, การผ่อนคลาย, การติดต่อกลับ)?
ไม่มีหนึ่งในตัว แต่คุณสามารถเขียนของคุณเองได้ค่อนข้างง่าย:
(function($) {
$.fn.invisible = function() {
return this.each(function() {
$(this).css("visibility", "hidden");
});
};
$.fn.visible = function() {
return this.each(function() {
$(this).css("visibility", "visible");
});
};
}(jQuery));
จากนั้นคุณสามารถเรียกสิ่งนี้ได้เช่น:
$("#someElem").invisible();
$("#someOther").visible();
(function($) {...}(jQuery));
กระดาษห่อคืออะไร? ฉันไม่เคยกำหนดฟังก์ชั่นของตัวเองใน jQuery มาก่อนฉันได้กำหนดฟังก์ชั่นเป็น JavaScript แบบตรงเสมอ
$
ตัวระบุภายในฟังก์ชันแม้ว่าจะอ้างถึงสิ่งอื่นในขอบเขตพาเรนต์
เป็นวิธีที่ง่ายแม้การทำเช่นนี้คือการใช้ของ jQuery ) toggleClass (วิธีการ
CSS
.newClass{visibility: hidden}
HTML
<a href="#" class=trigger>Trigger Element </a>
<div class="hidden_element">Some Content</div>
JS
$(document).ready(function(){
$(".trigger").click(function(){
$(".hidden_element").toggleClass("newClass");
});
});
หากคุณต้องการเพียงฟังก์ชันการทำงานมาตรฐานของการซ่อนด้วยการมองเห็นเท่านั้น: ซ่อนเพื่อเก็บเค้าโครงปัจจุบันคุณสามารถใช้ฟังก์ชันการเรียกกลับของการซ่อนเพื่อแก้ไข css ในแท็ก ซ่อนเอกสารใน jquery
ตัวอย่าง :
$('#subs_selection_box').fadeOut('slow', function() {
$(this).css({"visibility":"hidden"});
$(this).css({"display":"block"});
});
วิธีนี้จะใช้แอนิเมชั่นเจ๋ง ๆ ทั่วไปเพื่อซ่อน div แต่หลังจากที่แอนิเมชันเสร็จสิ้นคุณตั้งค่าการมองเห็นเป็นซ่อนและแสดงเพื่อบล็อก
ตัวอย่าง: http://jsfiddle.net/bTkKG/1/
ฉันรู้ว่าคุณไม่ต้องการโซลูชัน $ ("# aa") css () แต่คุณไม่ได้ระบุว่าเป็นเพราะใช้เฉพาะวิธี css () ที่ทำให้ภาพเคลื่อนไหวหายไป
นี่คือการติดตั้งครั้งเดียวสิ่งที่ชอบ$.prop(name[,value])
หรือ$.attr(name[,value])
ฟังก์ชั่น หากb
ตัวแปรถูกเติมการมองเห็นจะถูกตั้งค่าตามนั้นและthis
ถูกส่งคืน (อนุญาตให้ดำเนินการกับคุณสมบัติอื่น ๆ ) มิฉะนั้นจะส่งคืนค่าการมองเห็น
jQuery.fn.visible = function (b) {
if(b === undefined)
return this.css('visibility')=="visible";
else {
this.css('visibility', b? 'visible' : 'hidden');
return this;
}
}
ตัวอย่าง:
$("#result").visible(true).on('click',someFunction);
if($("#result").visible())
do_something;
Pure JSเทียบเท่ากับ jQuery hide () / show ():
function hide(el) {
el.style.visibility = 'hidden';
return el;
}
function show(el) {
el.style.visibility = 'visible';
return el;
}
hide(document.querySelector(".test"));
// hide($('.test')[0]) // usage with jQuery
เราใช้return el
เนื่องจากการตอบสนองอย่างราบรื่น "รูปแบบดีไซน์"
ด้านล่างนี้ผมยังให้unrecommended ขอทางเลือกซึ่งมี แต่อาจจะมากกว่า "ใกล้กับคำถาม" คำตอบ:
HTMLElement.prototype.hide = function() {
this.style.visibility = 'hidden';
return this;
}
HTMLElement.prototype.show = function() {
this.style.visibility = 'visible';
return this;
}
document.querySelector(".test1").hide();
// $('.test1')[0].hide(); // usage with jQuery
แน่นอนว่านี่ไม่ใช่การใช้ jQuery 'แต่ละ' (ให้ไว้ใน@JamesAllardice answer) เพราะเราใช้ js บริสุทธิ์ที่นี่
.toggle()