Javascript 对Jquery链中当前对象的引用
以下链条工作:Javascript 对Jquery链中当前对象的引用,javascript,jquery,jquery-scrollable,jquery-chaining,Javascript,Jquery,Jquery Scrollable,Jquery Chaining,以下链条工作: $("</p>").html('message').hide().appendTo("#chat").fadeIn() .parent().scrollTop($('#chat')[0].scrollHeight); $(“”).html('message').hide().appendTo(“#chat”).fadeIn() .parent().scrollTop($('#chat')[0].scrollHeight); 但这并不是: $("&l
$("</p>").html('message').hide().appendTo("#chat").fadeIn()
.parent().scrollTop($('#chat')[0].scrollHeight);
$(“”).html('message').hide().appendTo(“#chat”).fadeIn()
.parent().scrollTop($('#chat')[0].scrollHeight);
但这并不是:
$("</p>").html('message').hide().appendTo("#chat").fadeIn()
.parent().scrollTop($(this)[0].scrollHeight);
$(“”).html('message').hide().appendTo(“#chat”).fadeIn()
.parent().scrollTop($(this)[0].scrollHeight);
这个.scrollHeight
也不起作用。
如何在jquery链中获取当前对象引用?您只能在回调中访问当前对象。您无法访问链中的当前对象 试试这个:
var $parent = $("</p>").html('message').hide().appendTo("#chat").fadeIn().parent();
$parent.scrollTop($parent[0].scrollHeight);
var$parent=$(“”).html('message').hide().appendTo('chat').fadeIn().parent();
$parent.scrollTop($parent[0].scrollHeight);
如果你真的不想打破你的链条,你可以重新选择:
$("</p>").html('message').hide().appendTo("#chat").fadeIn()
.parent().scrollTop($("#chat")[0].scrollHeight);
$(“”).html('message').hide().appendTo(“#chat”).fadeIn()
.parent().scrollTop($(“#聊天”)[0].scrollHeight);
但我强烈建议你不要这样做。不需要选择同一个DOM元素两次。您只能访问回调中的当前对象。您无法访问链中的当前对象 试试这个:
var $parent = $("</p>").html('message').hide().appendTo("#chat").fadeIn().parent();
$parent.scrollTop($parent[0].scrollHeight);
var$parent=$(“”).html('message').hide().appendTo('chat').fadeIn().parent();
$parent.scrollTop($parent[0].scrollHeight);
如果你真的不想打破你的链条,你可以重新选择:
$("</p>").html('message').hide().appendTo("#chat").fadeIn()
.parent().scrollTop($("#chat")[0].scrollHeight);
$(“”).html('message').hide().appendTo(“#chat”).fadeIn()
.parent().scrollTop($(“#聊天”)[0].scrollHeight);
但我强烈建议你不要这样做。不需要两次选择同一个DOM元素。在第二个代码段
中,此
没有指向#chat
,这就是它不起作用的原因此
主要指向调用函数实例或触发任何事件的对象
你可以试试这样的
var $p = $("</p>").html('message').hide().appendTo("#chat");
$p.fadeIn().parent().scrollTop($p[0].scrollHeight);
var$p=$(“”).html('message').hide().appendTo(“#chat”);
$p.fadeIn().parent().scrollTop($p[0].scrollHeight);
在您的第二个代码片段中,此
没有指向#chat
,这就是它不起作用的原因此
主要指向调用函数实例或触发任何事件的对象
你可以试试这样的
var $p = $("</p>").html('message').hide().appendTo("#chat");
$p.fadeIn().parent().scrollTop($p[0].scrollHeight);
var$p=$(“”).html('message').hide().appendTo(“#chat”);
$p.fadeIn().parent().scrollTop($p[0].scrollHeight);
很明显。#chat
元素是一个静态元素,您可以在其中动态添加段落。因此,您希望事先获得对该元素的引用(例如,在页面初始化时):
现在,您可以这样做:
$( '<p />' ).html( 'message' ).hide().appendTo( chat ).fadeIn();
$( chat ).scrollTop( chat.scrollHeight );
$('').html('message').hide().appendTo(chat.fadeIn();
$(chat.scrollTop(chat.scrollHeight);
因此,我们的想法是在页面初始化时检索对主要静态元素(聊天框、工具栏、面板、导航等)的引用,然后在应用程序代码中使用这些引用。很明显。
#chat
元素是一个静态元素,您可以在其中动态添加段落。因此,您希望事先获得对该元素的引用(例如,在页面初始化时):
现在,您可以这样做:
$( '<p />' ).html( 'message' ).hide().appendTo( chat ).fadeIn();
$( chat ).scrollTop( chat.scrollHeight );
$('').html('message').hide().appendTo(chat.fadeIn();
$(chat.scrollTop(chat.scrollHeight);
因此,我们的想法是在页面初始化时检索对主要静态元素(聊天框、工具栏、面板、导航等)的引用,然后在应用程序代码中使用这些引用。美元(“#聊天”)[0]是否返回dom元素而不是美元(“#聊天”)。eq(0)将返回jquery集?@DyeA Yes,在我的代码中,
chat
是对DOM元素的引用。我更喜欢保持我的引用“干净”,而不是包装在jQuery对象中。呃:“好吧,这很明显。”OP显然不明显。$('#chat')[0]返回dom元素vs.$('#chat')。eq(0)将返回jQuery集?@DyeA是的,在我的代码中,chat
是对dom元素的引用。我更喜欢保持我的引用“干净”,而不是包装在jQuery对象中。呃:“好吧,这很明显。”这对OP来说显然不明显。