ฉันจะใช้ jquery เพื่อเลื่อนลงไปที่ด้านล่างของ iframe หรือหน้าได้อย่างไร?
ฉันจะใช้ jquery เพื่อเลื่อนลงไปที่ด้านล่างของ iframe หรือหน้าได้อย่างไร?
คำตอบ:
หากคุณต้องการเลื่อนภาพเคลื่อนไหวช้าๆที่ดีสำหรับสมอใด ๆ ด้วยhref="#bottom"
สิ่งนี้จะเลื่อนคุณไปด้านล่าง:
$("a[href='#bottom']").click(function() {
$("html, body").animate({ scrollTop: $(document).height() }, "slow");
return false;
});
อย่าลังเลที่จะเปลี่ยนตัวเลือก
scrollTop () ส่งคืนจำนวนพิกเซลที่ถูกซ่อนจากมุมมองจากพื้นที่ที่เลื่อนได้ดังนั้นให้:
$(document).height()
จะเกินจริงด้านล่างของหน้า สำหรับการเลื่อนเพื่อ 'หยุด' ที่ด้านล่างของหน้าความสูงปัจจุบันของหน้าต่างเบราว์เซอร์ต้องลบออก สิ่งนี้จะช่วยให้การใช้งานของการผ่อนคลายถ้าจำเป็นจึงกลายเป็น:
$('html, body').animate({
scrollTop: $(document).height()-$(window).height()},
1400,
"easeOutQuint"
);
easeOutQuint
ต้องใช้ปลั๊กอิน jQuery ตัวเองมีเพียงและlinear
swing
<!DOCTYPE html>
Chrome ไว้ Chrome จะส่งคืนค่าที่แน่นอนสำหรับหน้าต่างและความสูงของเอกสารซึ่งในกรณีนี้$(document).height()-$(window).height()
จะส่งคืนค่า 0 เสมอดูที่นี่: stackoverflow.com/questions/12103208/ …
หลังจากที่หัวข้อนี้ไม่ได้ผลสำหรับฉันสำหรับความต้องการเฉพาะของฉัน (การเลื่อนภายในองค์ประกอบเฉพาะในกรณีของฉันเป็น textarea) ฉันพบสิ่งนี้ในสิ่งที่ดีกว่าซึ่งสามารถพิสูจน์ได้ว่าเป็นประโยชน์กับคนอื่นที่อ่านการสนทนานี้:
เนื่องจากฉันมีวัตถุ jQuery รุ่นที่แคชไว้แล้ว ( myPanel
ในรหัสด้านล่างคือวัตถุ jQuery) รหัสที่ฉันเพิ่มลงในตัวจัดการเหตุการณ์ของฉันจึงเป็นแบบนี้:
myPanel.scrollTop(myPanel[0].scrollHeight - myPanel.height());
(ขอบคุณเบ็น)
var d = $('#mydiv'); d.scrollTop (d[0].scrollHeight - d.height ());
ฟังก์ชั่นง่าย ๆ ที่กระโดด (เลื่อนทันที) ไปที่ด้านล่างของหน้าทั้งหมด .scrollTop()
โดยจะใช้ในตัว ฉันไม่ได้พยายามปรับใช้สิ่งนี้เพื่อทำงานกับองค์ประกอบของแต่ละหน้า
function jumpToPageBottom() {
$('html, body').scrollTop( $(document).height() - $(window).height() );
}
$(document).scrollTop($(document).height());
อันนี้ใช้ได้สำหรับฉัน:
var elem = $('#box');
if (elem[0].scrollHeight - elem.scrollTop() == elem.outerHeight()) {
// We're at the bottom.
}
หากคุณไม่สนใจเกี่ยวกับแอนิเมชันคุณก็ไม่จำเป็นต้องเพิ่มความสูงขององค์ประกอบ อย่างน้อยในเบราว์เซอร์ทั้งหมดที่ฉันได้ลองถ้าคุณให้scrollTop
หมายเลขที่มากกว่าจำนวนสูงสุดมันจะเลื่อนไปที่ด้านล่าง ดังนั้นจงให้จำนวนที่มากที่สุดเป็นไปได้:
$(myScrollingElement).scrollTop(Number.MAX_SAFE_INTEGER);
หากคุณต้องการเลื่อนหน้าแทนที่จะเป็นองค์ประกอบที่มีแถบเลื่อนเพียงแค่สร้างให้myScrollingElement
เท่ากับ 'body, html'
เนื่องจากฉันต้องทำสิ่งนี้ในหลาย ๆ ที่ฉันได้เขียนฟังก์ชัน jQuery ที่รวดเร็วและสกปรกเพื่อให้สะดวกยิ่งขึ้นเช่นนี้:
(function($) {
$.fn.scrollToBottom = function() {
return this.each(function (i, element) {
$(element).scrollTop(Number.MAX_SAFE_INTEGER);
});
};
}(jQuery));
ดังนั้นฉันสามารถทำสิ่งนี้เมื่อฉันผนวกสิ่งที่ buncho ':
$(myScrollingElement).append(lotsOfHtml).scrollToBottom();
สคริปต์ที่กล่าวถึงในคำตอบก่อนหน้าเช่น:
$("body, html").animate({
scrollTop: $(document).height()
}, 400)
หรือ
$(window).scrollTop($(document).height());
จะไม่ทำงานในChromeและจะน่ากลัวในSafari ในกรณีที่ html
แท็กในCSSมีoverflow: auto;
ชุดคุณสมบัติ ฉันใช้เวลาคิดประมาณหนึ่งชั่วโมง
$('.block').scrollTop($('.block')[0].scrollHeight);
ฉันใช้รหัสนี้เพื่อเลื่อนการแชทเมื่อมีข้อความใหม่มาถึง