Обратится к родительскому элементу в qjuery

Тема в разделе "Другие языки", создана пользователем Mxnrl, 23 май 2011.

Модераторы: Цукер
  1. Mxnrl

    Mxnrl Постоялец

    Заблокирован
    Регистр.:
    29 апр 2010
    Сообщения:
    50
    Симпатии:
    1
    Подскажите пожалуйста, есть хтмл-блок -
    HTML:
    <div class="rating">
    <span class="rating_yes"><a class="addrate" href="#" name="{ID}">yes</a></span>
    <div class="rating_image"><span class="rating_num">{RATING}</span></div>
    <span class="rating_no"><a class="minusrate" href="#" name="{ID}">no</a></span>
    </div>
    и таких блоков на странице до 10 штук (к каждому посту рейтинг).
    в js кидаю запрос, увеличиваю рейтинг у поста и получаю в ответе сколько сейчас голосов у этого поста -
    HTML:
    $('.addrate').click(function(){
    		$.post("/rate.php", {
    			state: "add", 
    			id: $(this).attr('name')
    		}, function(data) {
    			if(data && data !=""){
    				$('rating_num').html(data);
    			}
    		} );
    		return false;
    	});
    внимательные уже наверное заметили - текст вставляется во все rating_num.
    Вопрос - как мне изменить значение только в rating_num в котором находится блок с a class="addrate" на который кликнули? как я понимаю это что-то элементарное..
     
  2. Mxnrl

    Mxnrl Постоялец

    Заблокирован
    Регистр.:
    29 апр 2010
    Сообщения:
    50
    Симпатии:
    1
    Все, решено. Если кому интересно - решил очень просто, добавил в
    HTML:
    <span class="rating_num" name="{ID}">
    а потом в js обращался к элементу через
    HTML:
    $('span.rating_num[name="'+post_id+'"]').html(data);
     
  3. Mr.Emm

    Mr.Emm Постоялец

    Регистр.:
    5 май 2008
    Сообщения:
    144
    Симпатии:
    107
    Нужно указывать не name="{ID}" а id="{ID}" либо data-name="{ID}"
    Вообщето можно было просто указать контекст/область для поиска, необходимого блока, как ты и хотел:
    PHP:
    var context = $(this).closest('div.rating'); // this - .addrate
     
    ...
    $(
    'span.rating_num'context).html(data);