Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
jQuery:将jQuery对象设置为[html]内容_Jquery - Fatal编程技术网

jQuery:将jQuery对象设置为[html]内容

jQuery:将jQuery对象设置为[html]内容,jquery,Jquery,有没有捷径: var child = $('<span>error message</span>'); $('#parent').html(child.html()); 但是我想重用子对象对象。 EDIT:同样,这不起作用,因为child是一个DOM对象,在任何时候最多只能放在一个父对象下 我正在寻找类似于: var child = $('<span>error message</span>'); $('#parent').content(chi

有没有捷径:

var child = $('<span>error message</span>');
$('#parent').html(child.html());
但是我想重用
子对象
对象。
EDIT:同样,这不起作用,因为
child
是一个DOM对象,在任何时候最多只能放在一个父对象下

我正在寻找类似于:

var child = $('<span>error message</span>');
$('#parent').content(child);
var child=$('error message');
$(“#父项”)。内容(子项);

您可以尝试以下方法

      var child = $('#parent').html('<span>error message</span>').children('span:eq(0)');
var child=$('#parent').html('error message').child('span:eq(0)');

我自己没有试过。老实说,您的第一个示例对我来说非常好。

您可以随时将功能包装到插件中:

(function($) {
    $.fn.setContent = function(content) {
        return this.empty().append(content);
    };
}(jQuery));

$('#parent').setContent(child);
另外,如果要重用现有的jQuery对象,如果以后要将其插入其他地方,可能必须使用
.clone()

var child='error message';
var child = '<span>error message</span>';
$('#parent').html(child);
$('#parent').html(child);
是你可能得到的最短的,它真的需要多短?lol

var child=$('error message').attr({'class':'error message'});
var child = $('<span>error message</span>').attr({ 'class' : 'error-message'});
$('#parent').html(child.clone()); 
$('#parent').html(child.clone());
请注意,您必须
clone()
child
,除非您希望实际将子对象从其上一个父对象移动


和的积分

什么样的捷径?第一个例子在我看来尽可能简短。如果你想重用
子对象
,那么你需要保留一个对它的引用,所以没有比你已经做的更短的方法了。empty().append(…)
。html(child.html())
太冗长了(展示不必要的细节对我的意图来说是多余的。)加上
.html(child.html())
感觉不太理想(重构解构html)@Felix Kling:我想做的正是:“设置元素的内容”。我的两个例子都没有简洁地说明这一点(太多细节)。如果没有内置的jQuery方法,我将使用
empty().append()
。使用
html(内容)
在元素上只会覆盖元素中的任何内容,无需使用emptyRight…我只是说您的代码不正确。不尝试并不是发布错误代码的借口,尤其是当它包含语法错误时。您错过了
$。each()
关于
这个
。除此之外,这会使我的代码变得漂亮,但最初的问题是
是否有捷径
而不是
我如何使这个
漂亮。不过这是一个有效的解决方案+1@user93422:为什么我需要
每个
?“我需要缩短此代码”“您可以随时编写新插件!”嗯,这会给你一个与
$('#parent').html(child)不同的结果吗
?@Tules:实际上不是……但正如我刚才所说,文档中没有描述传递DOM元素,因此我们不知道这是否是一个预期的功能。也可以说,
setContent
html
更具表现力。如果内容是一个jquery对象(在我的示例中,它是一个DOM元素)精简无法将其分配给多个父对象。例如,我的原始示例是正确的,但无效。我必须使用
.html()复制我的对象
毕竟。我更喜欢预先构建child,但这是一个有效的解决方案。+1在这种情况下,您的第一个示例确实是最短的,您可以看到我的编辑。child作为DOM对象不能被重用,因此您的答案是正确的。我将用
child=$(…).html()替换
child=''.
为了方便使用
.attr()
…指定属性,我又错了。
.html()
将为我提供
子元素的内容,而不是“outerHtml”。因此,您的解决方案与我在没有插件/扩展的情况下所能得到的非常好。使用
.clone()
子元素上的子元素将允许重用预构建为DOM元素的子元素。
var child = '<span>error message</span>';
$('#parent').html(child);
var child = $('<span>error message</span>').attr({ 'class' : 'error-message'});
$('#parent').html(child.clone());