为什么要将对象包装成jQuery对象?

为什么要将对象包装成jQuery对象?,jquery,Jquery,在Rails应用程序的JS模块中,我发现了以下代码: $body.on('ajax:success', '.js-comment-create', function(data, xhr, status) { var content = $(xhr.content), $comment = $(content.comment); 我想知道为什么xhr.content需要或者应该用$()包装? 只要一切正常,我就不会关注它,但现在,当我调试时,我想知道为什么会这样 控制台上的快速

在Rails应用程序的JS模块中,我发现了以下代码:

$body.on('ajax:success', '.js-comment-create', function(data, xhr, status) {
  var content = $(xhr.content), 
      $comment = $(content.comment);
我想知道为什么
xhr.content
需要或者应该用
$()
包装? 只要一切正常,我就不会关注它,但现在,当我调试时,我想知道为什么会这样

控制台上的快速测试表明,包装xhr对象会返回JQuery对象,而不是纯JS对象。但是,在我只想访问对象内部数据的特殊情况下,这有什么好处呢


编辑:
xhr.content
是一个JSON对象,其中键
comment
保存一段html以替换DOM的某些部分,如so
$(.aside ul.messages”).prepend($comment)

根据您引用的代码和提供的信息,“为什么要将对象包装成jQuery对象?”的答案是:它看起来像一个bug。这样做不仅没有充分的理由,而且会使代码无法正常工作

几乎可以肯定,代码应该是:

$body.on('ajax:success', '.js-comment-create', function(data, xhr, status) {
  var content = xhr.content, 
      $comment = $(content.comment);
甚至

$body.on('ajax:success', '.js-comment-create', function(data, xhr, status) {
  var $comment = $(xhr.content.comment);
…除非以后有其他内容使用
内容

下面是当您执行代码所执行的操作时发生的情况:

var xhr={
内容:{
评论:我就是评论
}
};
变量内容=$(xhr.content),
$comment=$(content.comment);
$comment.appendTo(document.body)

你必须展示
xhr.content
是什么样子才能得到这个问题的答案。@JJJ更新了这个问题的答案必须是$comment稍后在@Christophe Roussy:中的用法:“
xhr.content
是一个JSON对象”不,它只是一个对象。JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么您就不是在处理JSON。非常感谢您的回答。