当使用像replaceWith
这样的jQuery函数时,函数返回值是(如清楚记录的)原始 jQuery对象。但是,我通常希望与替换 jQuery对象链接。我该怎么做?
例如:
$("#original").replaceWith("<span id='replacement'></span>").someFn()
# this calls someFn() on #original, NOT as desired on #replacement.
解决这个问题最好的方法是什么?很明显我可以做$("#replacement").someFn()
,但这不是重点,因为(例如)我可能事先不知道替换元素的id。
注意:我也对有关前提的反馈感兴趣。例如,我是否错过了jQuery的观点,是否有一些我不知道的成语?
答案 0 :(得分:2)
你可以创建一个插件。最简单的形式可能是:
(function($) {
$.fn.replace = function(target) {
$(target).replaceWith(this);
return this;
};
}(jQuery));
用法:
$("<span id='replacement'></span>").replace("#original").someFn();
答案 1 :(得分:1)
试试这个:
$("#original").replaceWith($("<span id='replacement'></span>").someFn());
或
$("#original").replaceWith("<span id='replacement'></span>").filter("span").someFn()
答案 2 :(得分:0)
您可以预先在变量中创建跨度,然后替换为该变量。
var $span = $('<span id="replacement"></span>');
$('#original').replaceWith($span);
$span.someFn();