За последние 24 часа нас посетили 52573 программиста и 1799 роботов. Сейчас ищут 907 программистов ...

Помогите id достать из текущего эл-та :)

Тема в разделе "JavaScript и AJAX", создана пользователем Invision, 24 июн 2011.

  1. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Вообщем есть проблема.

    Голосование за и против:

    HTML:
    1.         <div class="like">
    2.             <b id="yes" style="cursor: pointer;">+</b> <span id="3">4</span> <b  style="cursor: pointer;" id="no">-</b>
    3.         </div>
    4.        
    5.         <div class="like">
    6.             <b id="yes" style="cursor: pointer;">+</b> <span id="4">14</span> <b  style="cursor: pointer;" id="no">-</b>
    7.         </div>
    Вызывается через:

    [js]$('.like b').click(function()[/js]

    Получаю ид

    [js]item_id = $('.like span').attr("id");[/js]

    Ну и естественно всегда берет ID первого эл-та...

    Как выбрать что то типо:

    item_id = $(this, 'span').attr("id");

    но никак не получается ) вообщем намудрил
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    если ты спан уже выбрал, то будет просто $(this).attr("id")

    ну, или я вопрос не понял)
     
  3. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Id элемента должен быть уникальным на страницу. И тебе нужно по-другому написать сам html, если я правильно понял твою задумку. Yes и No лучше сделать классами, т.к. могут быть назначены нескольким элементам.
    HTML:
    1. <div class="like">
    2.   <b class="yes">+</b> <span id="3">4</span> <b class="no">-</b>
    3. </div>
    4.        
    5. <div class="like">
    6.   <b class="yes">+</b> <span id="4">14</span> <b  class="no">-</b>
    7. </div>
    [js]//обработчик для всех Да
    $('.like .yes').click(function(){
    item_id =$(this).next('span').attr('id');
    });
    //обработчик для всех Нет
    $('.like .no').click(function(){
    item_id =$(this).prev('span').attr('id');
    });[/js]
    [css].yes,.no{cursor: pointer;}[/css]

    PS. Не тестировал, но уверен, будет работать. Если нет, то вместо next поставить nextAll и вместо prev поставить prevAll. Если и так не будет работать, то другой вариант:
    [js]//обработчик для всех Да
    $('.like .yes').click(function(){
    item_id =$(this).parent('.like').children('span').attr('id');
    });
    //обработчик для всех Нет
    $('.like .no').click(function(){
    item_id =$(this).parent('.like').children('span').attr('id');
    });[/js]
     
  4. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Вот спасибо большое)