2009-09-24 8 views
0
document.getElementById('logbox').scrollTop = 
document.getElementById('logbox').scrollHeight; 

J'ai essayé $('#logbox').scrollTop mais il n'y a pas cet attribut.Comment traduire ce pur javascript en jQuery?

Comment accéder à l'attribut DOM via l'objet jQuery?

+0

Je ne pense pas que scrollTop et scrollHeight sont des attributs d'élément – spender

+0

@balexandre - Sans oublier de s'impliquer dans la réponse aux questions. 469 questions et compter, et pas de réponses. –

+0

Sans oublier que les downvotes plus que les upvotes ... –

Répondre

1

Les éléments suivants doivent faire:

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

Il y a une fonction scrollTop en jquery, mais aucune fonction scrollHeight. Si vous passez une valeur dans scrollTop, elle sert à définir le décalage supérieur du scroll, vous devez donc lire l'attribut scrollHeight du nœud concerné en utilisant la fonction attr pour réaliser ce que vous essayez de faire.

2

$ ("# logbox"). Attr ("scrollTop", $ ("# logbox"). Attr ("scrollHeight"));

Pour plus d'informations: http://docs.jquery.com/Attributes

+1

Je ne pense pas que scrollTop et scrollHeight sont des attributs d'élément – spender

+0

@ spender, c'est en fait. – omg

+0

Hmm. Je crois réellement que c'est une propriété scriptable, mais ce n'est pas un attribut d'élément valide. http://msdn.microsoft.com/en-us/library/ms534618%28VS.85%29.aspx, http://msdn.microsoft.com/en-us/library/ms534618%28VS.85%29. aspx, https://developer.mozilla.org/En/DOM/Element.scrollTop, https://developer.mozilla.org/En/DOM/Element.scrollHeight etc. * scrollTop fait partie de l'objet DHTML de MSIE modèle et est implémenté dans le moteur Mozilla Gecko alimentant Firefox. scrollTop ne fait partie d'aucune spécification ou recommandation technique W3C * Encore une fois, ce n'est pas un attribut d'élément. Définitivement – spender

0

Essayez ceci:

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

Les attributs DOM deviennent donc des appels de fonction jQuery? – omg

+0

$ ("# logbox"). ScrollHeight n'est pas une fonction – omg

+0

Non, mais 'scrollTop' est un getter et un setter dans jQuery. Voir http://docs.jquery.com/CSS/scrollTop – Gumbo

0

Quelques façons de le rendre "plus jQuery" - tout dépend de la fréquence à laquelle vous devez définir scrollTop pour 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(); 
3

C'est à peu près aussi jQuery comme que vous pouvez obtenir tout en conservant la santé mentale, car il n'y a pas de soutien direct pour scrollHeight dans la bibliothèque (il y a pour scrollTop bien).

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

Vous ne devriez pas vraiment utiliser attr pour accéder scrollHeight que d'autres réponses ont recommandé; attr est pour la manipulation des attributs HTML (href, alt, title, etc.) et scrollHeight est un attribut DOM.

+1

+1 pour mentionner que attr est pour les attributs HTML, pas les propriétés 'DOMElement'. – gnarf

Questions connexes