[英]How can i change dynamically the content tab of jquery ui accordion
我有下一个代码:
<div id="accordion">
<h3>Row 1</h3>
<div id="1"></div>
<h3>Row 2</h3>
<div id="2"></div>
<h3>Row 3</h3>
<div id="3"></div>
</div>
$("#accordion").accordion({
autoHeight: false,
clearStyle: true,
active: 0,
change: function(event, ui) {
$("div#2").append('<p>Test</p>');
}
});
当在另一行中单击手风琴时,我想用数据填充<div id="2">
。 在改变事件我正在尝试这个:
$("div #2").append('<p>Test</p>');
但文本“测试”打印在h3内而不是div ...我怎样才能实现在div上打印文本???
我正在使用jquery 1.9.0
这似乎是一个bug http://bugs.jqueryui.com/ticket/4469#comment:4不是吗?
您必须重做为id
属性设置的值。 尝试:
<div id="accordion">
<h3 id="header1">Row 1</h3>
<div id="content1"></div>
<h3 id="header2">Row 2</h3>
<div id="content2"></div>
<h3 id="header3">Row 3</h3>
<div id="content3"></div>
</div>
这样,您可以轻松地定位哪个:
$("#content2").append('<p>Test</p>');
(或实际使用.append()
)
这是因为id
属性必须是唯一的,以便定位您真正想要的元素。 jQuery将使用本机document.getElementById
方法,该方法将返回具有该id
的第一个找到的元素。
更新:
根据您的新编辑,您需要使用没有空格的选择器:
$("div#2").append('<p>Test</p>');
虽然您不需要包含选择器的div
部分。 只需使用:
$("#2").append('<p>Test</p>');
虽然HTML5确实允许id
以数字开头(并且长度为1个字符),但我建议使用更具描述性的id
,就像之前我说的那样:“content1”等。
更新2:
再次看它结束了, $("div #2")
应实际工作为好,因为与元素id
“2” 是在<div>
从技术上讲,选择器应该工作。 尽管如此,我仍然建议选择器不是数字,而是更具描述性。
使用您的代码,无论如何我使用了更具描述性的选择器: http : //jsfiddle.net/BrRPz/2/
在css中,id选择器是唯一的元素。 所以不要在页面中重复相同的ID
<div id="accordion">
<h3 id="1">Row 1</h3>
<div class="1"></div>
<h3 id="2">Row 2</h3>
<div class="2"></div>
<h3 id="3">Row 3</h3>
<div class="3"></div>
</div>
使用脚本作为
$("div.2").append('<p>Test</p>');
注意: id选择器是唯一元素。
尝试$("div#2").append('<p>Test</p>');
$("div #2")
将在<div>
元素内定位id='2'
的元素,而$("div#2")
定位id='2'
的<div>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.