Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Одна функция для нескольких элементов (https://javascript.ru/forum/jquery/18591-odna-funkciya-dlya-neskolkikh-ehlementov.html)

XomiaK 07.07.2011 19:16

Одна функция для нескольких элементов
 
Добрый день!
Я - php-программист, столкнулся с необходимостью изучения jQuery. Всё довольно просто и понятно, но есть один вопрос, который по идее элементарный, но я почему-то не могу прийти к ответу. Помогите мне, пожалуйста!

Вот моя проблема:
У меня на странице есть список материалов. Каждый из них можно оценить. Чтобы не обновлять страницу после каждого обновления решил использовать jQuery и столкнулся со следующей проблемой. Вот мой код посылки POST запроса для дальнейшей обработки оценки и изменение текущей оценки:
<script>
   // Документ готов
   $(document).ready(function() {
     // Назначение события
     $("#rate-<?=$obj->id?>").click(function() {
       // Посылка запроса
       $.post("/ajax/rate/",{
         // Параметр передаваемый в скрипт  
         rate: $("#rateval-<?=$obj->id?>").val(),
         id: "<?=$obj->id?>"
       },function(data) {
         $("#rating-<?=$obj->id?>").html(data);
         $("#israting-<?=$obj->id?>").html("");
       });
     });
   });
   </script>

и этот код я повторяю на странице столько раз, сколько статей на ней находится, для того, чтобы голосование произошло именно для той статьи, за которую проголосовали.
а вот один из div'ов:
Оценка:
<span id="rating-333">
      <strong>0</strong> (0 голосов) 
</span>
<div id="israting-333">
   <select name="rate" id="rateval-333">
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5" selected="selected">5</option>
   </select>
   <input id="rate-333" value="голосовать" type="button">
</div>


Суть вопроса: Можно ли как-то передать значение в эту функцию, которое хранится у меня в переменной $id, чтобы код функции был указан 1 раз?
Голосование - это как для примера, а так - у меня там много чего ещё таким же способом работает и везде повторяется один и тот же код.

Если вкратце: как мне передать значение php переменной для определённого элемента в jQuery функцию?

Посмотреть, что я наворотил, можно тут: www.rap.org.ua

XomiaK 07.07.2011 19:38

или может как-то вызывать функцию через параметр к инпуту onClick? но я опятьже не совсем понимаю, как это сделать для jQuery((

kobezzza 07.07.2011 19:47

Если я правильно понял ваш вопрос, то вам нужно делегировать свои события. В jQuery для этого есть 2 метода: delegate и live (первый предпочтительнее) или сделать ручками, что тоже довольно просто.


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