Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Событие onclick выполняется на первом элементе (https://javascript.ru/forum/jquery/40395-sobytie-onclick-vypolnyaetsya-na-pervom-ehlemente.html)

preanik 03.08.2013 17:59

Событие onclick выполняется на первом элементе
 
Здравствуйте!
Мне необходимо сделать алфавитный указатель, т.е. чтобы при клике на какую-то букву алфавита, выводились соответствующие этой букве категории.
Помогите разобраться пожалуйста, почему функция onclick срабатывает только на первом элементе?
<?php
$l1 = '';
$args = array(  
		'type'                     => 'post'  
		 ,'orderby'                  => 'name'
		 ,'hide_empty'				=> 0
		 ,'child_of'				=>6
		 ,'order'                    => 'ASC'  );  
$categories = get_categories( $args );  
foreach($categories as $category) { 
  $l2 = mb_substr($category->name, 0, 1, 'utf-8');
  if ($l1 != $l2) {
    $l1 = $l2;
	//echo($l2);
    echo '<div class="test1" onclick="ima('.$l1.')"><a href="#">' . $l1 . '</a>';
  }
  echo '<div title="'.$l1.'" class="test2" style="display:none"><a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a></div></div>';
} ?>

function ima(litera){
	exit=litera;
	jQuery("[title =" + exit + "]").fadeIn(500);
}

preanik 03.08.2013 18:46

Я так понял, здесь при onclick надо передавать this. А как в таком случае с this передать содержание переменной $l1 ?

preanik 03.08.2013 19:45

Оказалось всё проще, чем я думал.

Получилось сделать так:
<?php
$l1 = '';
$args = array(  
		'type'                     => 'post'  
		 ,'orderby'                  => 'name'
		 ,'hide_empty'				=> 0
		 ,'child_of'				=>6
		 ,'order'                    => 'ASC'  );  
$categories = get_categories( $args );  
foreach($categories as $category) { 
  $l2 = mb_substr($category->name, 0, 1, 'utf-8');
  if ($l1 != $l2) {
    $l1 = $l2;
	//echo($l2);
    echo '<div class="test1" title="'.$l1.'" onclick="ima(this)"><a href="#">' . $l1 . '</a></div>';
  }
  echo '<div title="'.$l1.'" class="test2" style="display:none"><a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a></div>';
} ?>


function ima(litera){
	var litera = $(litera).attr('title');
	jQuery("[title='"+ litera +"']").fadeIn(500);
}


Часовой пояс GMT +3, время: 00:43.