Javascript 将jQuery从1.8更新到1.11标记未追加
我正在尝试将这个javascript代码从1.8更新到1.11,我遇到了一些问题。下面的代码过去在1.8中工作,但现在只有一半工作没有错误 我有以下功能:Javascript 将jQuery从1.8更新到1.11标记未追加,javascript,jquery,Javascript,Jquery,我正在尝试将这个javascript代码从1.8更新到1.11,我遇到了一些问题。下面的代码过去在1.8中工作,但现在只有一半工作没有错误 我有以下功能: function selectCountry(c_id){ var obj = $('#country a[data-index=' + c_id + ']'); if(obj.hasClass('cselect')) return; var clone = obj.clone(); var d
function selectCountry(c_id){
var obj = $('#country a[data-index=' + c_id + ']');
if(obj.hasClass('cselect'))
return;
var clone = obj.clone();
var div = $('<div class="keyword-box"></div>');
var remove = $('<a href="javascript:void(0);" data-index="' + c_id + '" data-label="removeCountry_label" data-action="removeCountry" class="remove EXremove">×</a>');
clone.after(remove).appendTo(div);
div.prependTo('#selected_country');
obj.hide().addClass('cselect');
return false;
}
它过去的作用是创建一个如下所示的div:
<div class="keyword-box">
<a href="javascript:void(0);" class="country-link keyword" data-index="9" rel="Albania">Albania</a>
<a href="javascript:void(0);" data-index="9" data-label="removeCountry_label" data-action="removeCountry" class="remove EXremove">×</a>
</div>
<div class="keyword-box">
<a href="javascript:void(0);" class="country-link keyword" data-index="9" rel="Albania">Albania</a>
</div>
div.append(clone);
div.append(remove);
div.prependTo('#selected_country');
但现在它正在创建这样一个div:
<div class="keyword-box">
<a href="javascript:void(0);" class="country-link keyword" data-index="9" rel="Albania">Albania</a>
<a href="javascript:void(0);" data-index="9" data-label="removeCountry_label" data-action="removeCountry" class="remove EXremove">×</a>
</div>
<div class="keyword-box">
<a href="javascript:void(0);" class="country-link keyword" data-index="9" rel="Albania">Albania</a>
</div>
div.append(clone);
div.append(remove);
div.prependTo('#selected_country');
我不知道为什么第二个a标记不再添加到div中。有人知道为什么会发生这种情况吗?在1.9版上有一个新版本
1.9之前、.after、.before和.replaceWith将尝试
如果当前jQuery集中的第一个节点
集合未连接到文档,在这些情况下,将返回新的
jQuery集合而不是原始集合。这就产生了几个问题
该方法可能存在也可能不存在不一致性和彻底的错误
根据其参数返回新结果!截至1.9,这些
方法始终返回原始的未修改集并尝试
在没有父节点的节点上使用.after、.before或.replaceWith
没有效果也就是说,集合或其包含的节点都不可用
变了
在你的情况下,你可以改变
clone.after(remove).appendTo(div);
到
或
在jQuery 1.9中更改了.after API。在您的案例中使用它现在没有效果。我认为您可能应该创建并显式地将这两个元素分别附加到它
因此:
我认为如果您添加如下链接,您的代码将更具可读性:
<div class="keyword-box">
<a href="javascript:void(0);" class="country-link keyword" data-index="9" rel="Albania">Albania</a>
<a href="javascript:void(0);" data-index="9" data-label="removeCountry_label" data-action="removeCountry" class="remove EXremove">×</a>
</div>
<div class="keyword-box">
<a href="javascript:void(0);" class="country-link keyword" data-index="9" rel="Albania">Albania</a>
</div>
div.append(clone);
div.append(remove);
div.prependTo('#selected_country');
有错误吗?您使用的是.live吗?没有错误,我使用的是live,但我删除了所有这些,并将其替换为on。