如何将这个纯javascript翻译成jQuery?

时间:2009-09-24 08:40:50

标签: jquery dom

document.getElementById('logbox').scrollTop = 
document.getElementById('logbox').scrollHeight;

我尝试了$('#logbox').scrollTop,但没有这个属性。

如何通过jQuery对象访问DOM属性?

5 个答案:

答案 0 :(得分:3)

这与jQuery一样,同时保留了理智,因为库中没有对scrollHeight的直接支持(尽管有scrollTop)。

$('#logbox').each(function() {
    this.scrollTop = this.scrollHeight;
});

您不应该像其他答案所建议的那样使用attr来访问scrollHeight; attr用于操作 HTML 属性(href,alt,title等),scrollHeight DOM 属性。

答案 1 :(得分:2)

$(“#logbox”)。attr(“scrollTop”,$(“#logbox”)。attr(“scrollHeight”));

了解更多信息:http://docs.jquery.com/Attributes

答案 2 :(得分:1)

以下应该这样做:

$('#logbox').scrollTop($('#logbox').attr("scrollHeight"));

jquery中有一个scrollTop函数,但没有scrollHeight函数。如果将值传递给scrollTop,则用于设置滚动顶部偏移量,因此您必须使用attr函数读取相关节点的scrollHeight属性,以实现您要执行的操作。

答案 3 :(得分:0)

试试这个:

var elem = $('#logbox');
elem.scrollTop(elem.scrollTop());

答案 4 :(得分:0)

使它成为“更多jQuery”的几种方法 - 所有这些都取决于你需要将scrollTop设置为scrollHeight的频率。

// jQuery to get the DOMElement only
var elem = $('#logbox')[0];  // $('#logbox').get(0) works too
elem.scrollTop = elem.scrollHeight;

// a little more jQuery way - allows you to pass more than one matched element,
// $.fn.each() passes each DOMElement in as the context of `this`
$('.scrollers').each(function() {
  $(this).scrollTop(this.scrollHeight);
});

// even more jQuery way - make your own plugin
$.fn.scrollToBottom = function() {
  return this.each(function() {
    $(this).scrollTop(this.scrollHeight);
  });
};
$('#logbox').scrollToBottom();