我有一个问题 javascript 切换索引
I have a question javascript toggle index
在弹出窗口中使用切换功能的事件时window,我有一个关于切换事件的问题。
切换事件发生在 tableheader + @index.
当我点击一个表头时,只显示表体行+@索引值。
创建没有@index 值的事件时,id 值会重复,因此不会显示整行。
求助javascript、jquery高手!
<!-- popup -->
<script id="reqList-template" type="text/x-handlebars-template">
{{#resultList}}
<div class="BarType header" id="tableheader{{@index}}">
<a class="close" id="togglebtn{{@index}}"
href="javascript:toggle_pop({{@index}})"></a>
<span>{{name}}</span>
</div>
{{#each rsToAdd}}
<div class="BarType body" id="tablebody{{@index}}">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="{{id}}">
{{name}}
</tr>
</tbody>
</table>
</div>
{{/each}}
{{/resultList}}
</script>
<!-- parent -->
function toggle_pop(index){
$("#tablebody" +index).slideToggle();
if ( $("#togglebtn"+index).hasClass('open') ){
$("#togglebtn"+index).addClass('close');
$("#togglebtn"+index).removeClass('open');
}else{
$("#togglebtn"+index).addClass('open');
$("#togglebtn"+index).removeClass('close');
}
}
在 HTML 中,文档 ID 必须是唯一的。这就是为什么始终避免 ID 重复的原因。使用 class
代替它。
您的脚本可能如下所示:
<script id="reqList-template" type="text/x-handlebars-template">
{{#resultList}}
<div class="BarType header tableheader{{@index}}">
<a class="close" href="#" onclick="toggle_pop({{@index}})">
<span>{{name}}</span>
</a>
</div>
{{#each rsToAdd}}
<div class="BarType body tablebody{{@index}}">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="{{id}}">
{{name}}
</tr>
</tbody>
</table>
</div>
{{/each}}
{{/resultList}}
</script>
JS:
function toggle_pop(index){
$(".tablebody" +index).slideToggle();
}
尝试从 #resultList
中捕获 @index
并将其放置在 rsToAdd
的每个 tablebody
中,我的意思是让每个 BarType body
看起来像:
<div class="BarType header tableheader0"> <-- index = 0
...
</div>
<div class="BarType body tablebody0"> <-- here the same 0, etc for 1, 2, others
...
</div>
<div class="BarType body tablebody0"> <-- here the same 0, etc for 1, 2, others
...
</div>
这里的代码片段向您展示了它应该是怎样的:
function toggle_pop(index){
$(".tablebody" +index).slideToggle();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="BarType header tableheader0">
<a class="close" href="#" onclick="toggle_pop(0)">
<span>qqqqqqq</span>
</a>
</div>
<div class="BarType body tablebody0">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="0">
qqqqqq
</tr>
</tbody>
</table>
</div>
<div class="BarType body tablebody0">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="1">
qqq222
</tr>
</tbody>
</table>
</div>
<div class="BarType header tableheader1">
<a class="close" href="#" onclick="toggle_pop(1)">
<span>qqqqqqq</span>
</a>
</div>
<div class="BarType body tablebody1">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="0">
qqqqqq
</tr>
</tbody>
</table>
</div>
<div class="BarType body tablebody1">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="1">
qqq222
</tr>
</tbody>
</table>
</div>
您应该为 tableheader
下的所有 tablebody
设置一个公共 class。您可以使用 {{@../index}}
访问父级的索引,使元素结构看起来像
<div class="BarType header tableheader0"></div>
<div class="BarType body tablebody0"></div>
<div class="BarType body tablebody0"></div>
<div class="BarType header tableheader1"></div>
<div class="BarType body tablebody1"></div>
<div class="BarType body tablebody1"></div>
使用父级索引创建 class 如下
<div class="BarType body tablebody{{@../index}}">
然后使用 class 名称作为选择器,
function toggle_pop(index){
$(".tablebody" +index).slideToggle();
}
在弹出窗口中使用切换功能的事件时window,我有一个关于切换事件的问题。 切换事件发生在 tableheader + @index.
当我点击一个表头时,只显示表体行+@索引值。 创建没有@index 值的事件时,id 值会重复,因此不会显示整行。 求助javascript、jquery高手!
<!-- popup -->
<script id="reqList-template" type="text/x-handlebars-template">
{{#resultList}}
<div class="BarType header" id="tableheader{{@index}}">
<a class="close" id="togglebtn{{@index}}"
href="javascript:toggle_pop({{@index}})"></a>
<span>{{name}}</span>
</div>
{{#each rsToAdd}}
<div class="BarType body" id="tablebody{{@index}}">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="{{id}}">
{{name}}
</tr>
</tbody>
</table>
</div>
{{/each}}
{{/resultList}}
</script>
<!-- parent -->
function toggle_pop(index){
$("#tablebody" +index).slideToggle();
if ( $("#togglebtn"+index).hasClass('open') ){
$("#togglebtn"+index).addClass('close');
$("#togglebtn"+index).removeClass('open');
}else{
$("#togglebtn"+index).addClass('open');
$("#togglebtn"+index).removeClass('close');
}
}
在 HTML 中,文档 ID 必须是唯一的。这就是为什么始终避免 ID 重复的原因。使用 class
代替它。
您的脚本可能如下所示:
<script id="reqList-template" type="text/x-handlebars-template">
{{#resultList}}
<div class="BarType header tableheader{{@index}}">
<a class="close" href="#" onclick="toggle_pop({{@index}})">
<span>{{name}}</span>
</a>
</div>
{{#each rsToAdd}}
<div class="BarType body tablebody{{@index}}">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="{{id}}">
{{name}}
</tr>
</tbody>
</table>
</div>
{{/each}}
{{/resultList}}
</script>
JS:
function toggle_pop(index){
$(".tablebody" +index).slideToggle();
}
尝试从 #resultList
中捕获 @index
并将其放置在 rsToAdd
的每个 tablebody
中,我的意思是让每个 BarType body
看起来像:
<div class="BarType header tableheader0"> <-- index = 0
...
</div>
<div class="BarType body tablebody0"> <-- here the same 0, etc for 1, 2, others
...
</div>
<div class="BarType body tablebody0"> <-- here the same 0, etc for 1, 2, others
...
</div>
这里的代码片段向您展示了它应该是怎样的:
function toggle_pop(index){
$(".tablebody" +index).slideToggle();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="BarType header tableheader0">
<a class="close" href="#" onclick="toggle_pop(0)">
<span>qqqqqqq</span>
</a>
</div>
<div class="BarType body tablebody0">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="0">
qqqqqq
</tr>
</tbody>
</table>
</div>
<div class="BarType body tablebody0">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="1">
qqq222
</tr>
</tbody>
</table>
</div>
<div class="BarType header tableheader1">
<a class="close" href="#" onclick="toggle_pop(1)">
<span>qqqqqqq</span>
</a>
</div>
<div class="BarType body tablebody1">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="0">
qqqqqq
</tr>
</tbody>
</table>
</div>
<div class="BarType body tablebody1">
<table class="def_inTB fl" >
<tbody>
<tr>
<input class="checkbox" type="checkbox" value="1">
qqq222
</tr>
</tbody>
</table>
</div>
您应该为 tableheader
下的所有 tablebody
设置一个公共 class。您可以使用 {{@../index}}
访问父级的索引,使元素结构看起来像
<div class="BarType header tableheader0"></div>
<div class="BarType body tablebody0"></div>
<div class="BarType body tablebody0"></div>
<div class="BarType header tableheader1"></div>
<div class="BarType body tablebody1"></div>
<div class="BarType body tablebody1"></div>
使用父级索引创建 class 如下
<div class="BarType body tablebody{{@../index}}">
然后使用 class 名称作为选择器,
function toggle_pop(index){
$(".tablebody" +index).slideToggle();
}