jQuery.append()1.8.3 vs 1.7.2

时间:2014-01-10 08:16:07

标签: jquery dom

我有一些DOM操作不适用于1.7.2,但正在使用1.8.3

1.8.3 http://jsfiddle.net/6Nyqd/

1.7.2 http://jsfiddle.net/6Nyqd/1/

(抛出错误An attempt was made to reference a Node in a context where it does not exist.

更新 我应该更改什么以便它可以与1.7.x+版本的jQuery一起使用?

2 个答案:

答案 0 :(得分:1)

1.8之前,append方法不接受数组作为参数

请参阅this bug


作为一种解决方案,您可以处理一系列dom元素,如

var options = "text for li";
var $ul = $(".loto_stat");

var $template = $ul.first().children().first();
var $domel = $.map(options.split(''), function (el) {
    return $template.clone().show().data("brojevi", el)
        .find(".text").text(el).end().get(0);
});

$ul.append($domel);

演示:1.81.71.91.10


为什么你的查询不起作用,map()函数返回jQuery对象,因此$domel是jQuery对象的数组,jQuery 1.7不支持,但支持dom元素数组。


1.9 / 1.10的问题不是附加,而是将字符串传递给$.map(),你需要传递一个数组,所以使用options.split('')

答案 1 :(得分:1)

在jQuery 1.8之前,你不能附加一个jQuery对象数组。

你可以这样做:

$.each($domel, function(_, e) {$ul.append(e);});

你说不适用于1.9和1.10的原因是因为你使用$.map的字符串,现在需要一个数组。

所以改变

$.map(options, 

$.map(options.split(''),