对Jquery链中当前对象的引用



以下链起作用:

    $("</p>").html('message').hide().appendTo("#chat").fadeIn()
.parent().scrollTop($('#chat')[0].scrollHeight);

但事实并非如此:

    $("</p>").html('message').hide().appendTo("#chat").fadeIn()
.parent().scrollTop($(this)[0].scrollHeight);

this.scrollHeight也不起作用。如何在jquery链中获取当前对象引用?

您只能在回调中访问当前对象。您无法访问链中的当前对象。

试试这个:

var $parent = $("</p>").html('message').hide().appendTo("#chat").fadeIn().parent();
$parent.scrollTop($parent[0].scrollHeight);

如果你真的不想打破你的链,你可以重新选择:

$("</p>").html('message').hide().appendTo("#chat").fadeIn()
.parent().scrollTop($("#chat")[0].scrollHeight);

但我强烈建议你不要这样做。没有必要两次选择同一个DOM元素。

在您的第二个代码片段中,this没有指向#chat,这就是它不起作用的原因。this主要指向调用函数实例或触发任何事件的对象。

你可以试试这种

var $p = $("</p>").html('message').hide().appendTo("#chat");
$p.fadeIn().parent().scrollTop($p[0].scrollHeight);

很明显。#chat元素是一个静态元素,您正在动态地向其添加段落。因此,您希望预先获得对该元素的引用(例如,页面初始化):

var chat = $( '#chat' )[0];

现在,你这样做:

$( '<p />' ).html( 'message' ).hide().appendTo( chat ).fadeIn();
$( chat ).scrollTop( chat.scrollHeight );

因此,我们的想法是在页面初始化时检索对主要静态元素(聊天框、工具栏、面板、导航等)的引用,然后在整个应用程序代码中使用这些引用。

相关内容

  • 没有找到相关文章

最新更新