У меня есть таблица, каждая "<tr>" имеет div. Каждый div имеет динамический класс (например) ->
class="name<?php echo $id?>"
Теперь каждый "<tr>" также имеет другой, который по умолчанию является "display: none". Также в каждом "<tr>" находится еще один div, содержащий простой текст "Open".
То, что я пытаюсь достичь, - это... когда я нажимаю открытый текст, он должен "отображать: блокировать" div для ТОЧНО, ЧТО "<tr>", а не для ВСЕХ.
Я пробовал:
<script>
var adida = <?php echo $this->row->id; ?>
jQuery(document).ready(function(){
jQuery("#vj"+adida).click(function(){
jQuery(".opt"+adida).toggle();
});
});
Я поместил этот скрипт в EACH "<tr>", наверху... но он, похоже, не работает.. ничего не происходит... может кто-нибудь, пожалуйста, помогите мне. спасибо
PS Если я посмотрю исходный код в скрипте в строке ->
var adida = <?php echo $this->row->id; ?>
Я вижу, что он показывает CORRECT... поэтому в каждом "<tr>" это показывает, например
var adida = 559;
Не забывайте придерживаться уникальных классов в строках таблицы. Когда срабатывает событие click, вы можете получить элемент, который был нажат из контекста. Из этого вы можете перемещаться по DOM до строки таблицы, а затем вниз до требуемого div.
<table>
<tr>
<td><button>open</button></td>
<td><div style="display: none;">Hidden by default</div></td>
</tr>
<tr>
<td><button>open</button></td>
<td><div style="display: none;">Hidden by default</div></td>
</tr>
<tr>
<td><button>open</button></td>
<td><div style="display: none;">Hidden by default</div></td>
</tr>
<tr>
<td><button>open</button></td>
<td><div style="display: none;">Hidden by default</div></td>
</tr>
</table>
<script>
jQuery('table button').on('click', function (evt) {
var $button = $(this);
var $tr = $button.parents('tr');
var $div = $tr.find('div');
$div.show();
});
</script>
Избегайте нескольких обработчиков событий, так как действие uniq должно выполняться относительно нажатой кнопки, вместо этого используйте делегирование событий, связав событие с первым общим предком.
Предполагая этот HTML-код
<table id="mytable">
<tr>
<td><button>Click here</button></td>
<td><div>misc content</div></td>
</tr>
<tr>
<td><button>Click here</button></td>
<td><div>misc content</div></td>
</tr>
</table>
JS
<script>
$(function(){
$('#mytable').on('click', function(e){
var $b = $(e.target);
if($b.is('button')){
$b.closest('tr').find('div').show();
// eventually e.stopPropagation(); AND/OR return false;
}
});
});
</script>
Стиль
#mytable div{
display:none
}