我在动态创建的表中有两个div。
<td>
<div class='pane1 display'>
<a href='#' id='part1'><span class='add_field'>Add field</span></a>
</div>
<div class='pane2 hidee'>
</div>
</td>
我希望在点击该表的“添加”字段时将这两个类的名称改组为
<td>
<div class='pane1 hide'>
<a href='#' id='part1'><span class='add_field'>Add field</span></a>
</div>
<div class='pane2 display'>
</div>
</td>
我试过这个
$('.entity_table').on('click', '.add_field', function(events){
$(this).parent().removeClass('display');
$(this).parent().addClass('hide')
$(this).parents('td div.pane2').removeClass('hide');
$(this).parents('td div.pane2').addClass('display');
});
不能使用document.getElementbyid cus我必须填充单击它的表的类。
感谢名单
答案 0 :(得分:1)
像这样使用:
$(this).closest('[class^=pane]').toggleClas('display hide');
说明
.closest('[class^=pane]')
// select closest div which is starting with pane
//don't use just parent as it will select the a tag in your html
.toggleClass('display hide')
// if it is display then it removes display class and adds hide class
// and vice versa
答案 1 :(得分:1)
您指向span
标记的父级(您设置事件监听器的标记),它是a
标记。您想要访问a
代码的父级...
所以你想获得被点击的元素的父元素的父元素:
$('.entity_table').on('click', '.add_field', function(events){
var $pane1 = $(this).parent().parent(); // store the jquery element for performance and readability matter
$pane1.removeClass('display').addClass('hide'); // toggle pane1 classes
$pane1.next('.pane2').removeClass('hide').addClass('display'); //toggle pane2 classes
});
答案 2 :(得分:0)
$('.entity_table').on('click', '.add_field', function (events) {
var th = this,
td = $(th).closest('td'),
display = $(td).find('.display'),
hide = $(td).find('.hide');
$(display).toggleClass('display hide');
$(hide).toggleClass('display hide');
});
请在此处查看DEMO。