Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对Jquery链中当前对象的引用_Javascript_Jquery_Jquery Scrollable_Jquery Chaining - Fatal编程技术网

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来说显然不明显。