【发布时间】:2014-01-31 10:09:42
【问题描述】:
由于 jquery-ui 选项卡使用 id 而不是类标签,我创建了一个函数来为我的所有类生成 id。现在我想添加新内容并将其应用于新内容,但添加新内容后,所有其他选项卡都停止工作!
这是html内容:
<div class="accordion">
<h3>Product x</h3>
<div class="tabs">
<ul>
<li><a href="" class="tabpanellink">General product info</a></li>
<li><a href="" class="tabpanellink">End user info</a></li>
</ul>
<div class="tabpanel">
general info for product x.
</div>
<div class="tabpanel">
end user info product x.
</div>
</div>
</div>
<div class="accordion">
<h3>Product y</h3>
<div class="tabs">
<ul>
<li><a href="" class="tabpanellink">General info</a></li>
<li><a href="" class="tabpanellink">End user info</a></li>
</ul>
<div class="tabpanel">
general info for product y.
</div>
<div class="tabpanel">
end user info product y.
</div>
</div>
</div>
这就是我想要做的:
function fixtabs(){
$(".tabpanellink").each(
function(uniqueindex){
$(this).attr('href', '#tab-' + uniqueindex);
}
);
$(".tabpanel").each(
function(uniqueindex){
$(this).attr('id', 'tab-' + uniqueindex);
}
);
$(".accordion").accordion({
collapsible: true,
active: false
});
}
function updateDocument(){
fixtabs();
$(".tabs").tabs();
}
function addProduct(){
//Add another product(this is a server response in a real case scenario):
var newProduct = '';
newProduct += '<div class="accordion">';
newProduct += '<h3>Product z</h3>';
newProduct += '<div class="tabs">';
newProduct += '<ul>';
newProduct += '<li><a href="" class="tabpanellink">General product info</a></li>';
newProduct += '<li><a href="" class="tabpanellink">End user info</a></li>';
newProduct += '</ul>';
newProduct += '<div class="tabpanel">';
newProduct += 'general info for new product.';
newProduct += '</div>';
newProduct += '<div class="tabpanel">';
newProduct += 'end user info product x.';
newProduct += '</div>';
newProduct += '</div>';
newProduct += '</div>';
$(".accordion").first().before(newProduct);
updateDocument();
}
updateDocument();
addProduct();
这里是jsfiddle。
如何在不破坏现有标签的情况下对新内容应用标签效果?
响应答案更新:我无法删除updateProduct();!我必须先调用 updateDocument 以便初始化所有内容! addProduct 仅在之后调用(即当用户单击添加产品时!)
【问题讨论】:
-
您在
each调用中使用uniqueindex作为参数名称。这不会增加您所期望的每个uniqueindex变量,而只会增加参数!只需删除参数并将uniqueindex移到对每个参数的第一次调用上方即可。 -
为什么要动态添加内容??
-
你的意思是
newProduct += etc...?它显示来自服务器的内容
标签: javascript jquery jquery-ui jquery-ui-tabs