Подобное SELECT событие onChange с jQuery - PullRequest
0 голосов
/ 27 августа 2009

У меня есть небольшое выпадающее меню, аналогичное <select>, которое контролируется внешней js-функцией.
HTML:

<ul class="select" id="select">
   <li>
      <a href="javascript:void(0);" class="selectlink" id="price_type">UAH</a>
      <ul>
         <li onclick="onchange('elm0', 0);" >
            <a href="javascript:void(0);" id="elm0">UAH</a></li>
         <li onclick="onchange('elm1', 1);" >
            <a href="javascript:void(0);" id="elm1">USD</a></li>
         <li onclick="onchange('elm2', 2);" >
            <a href="javascript:void(0);" id="elm2">EUR</a></li>
         <li onclick="onchange('elm3', 3);" style="border-bottom:1px solid #54616E">
            <a href="javascript:void(0);" id="elm3">...</a></li>
      </ul>
   </li>
</ul>

и onchange -функция с использованием jQuery:

function onchange(id, index) {
  $("#price_type").html($("#"+id).html());
  updateData(index);
}

где updateData(index) выполняет AHAH-запрос на изменение содержимого в соответствии с аргументом index. Но я хочу изменить этот старый источник, используя jQuery и, следовательно, без onclick="onchange('elm...', ...);". И поскольку я начал изучать jQuery 2 дня назад, мне нужна помощь по поводу того, как это правильно:

$(function() {
   $("ul#select li ul li").click(function() {
      var id = $("[id^=elm]").attr("id").match(/\((\d+)\)/)[1];
      $("#price_type").html($("#elm"+id).html());
      updateData(id);
   });
});

и я что-то не так делаю ... Спасибо за ваши ответы!

1 Ответ

2 голосов
/ 27 августа 2009

Я бы на самом деле прикрепил click() к якору, а не к элементу списка.

$("ul#select li ul li a").click(function() {
    $("#price_type").html($(this).html());

    var id = $(this).attr("id")).match(/\((\d+)\)/)[1];
    updateData(id);

    return false; // Now you can also remove the javascript:void(0) from your anchors onClick
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...