使用jQuery的类似于onChange的事件

时间:2009-08-26 22:07:54

标签: jquery events

我有一个类似<select>的下拉菜单,它与外部的js-function相对应 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)根据参数index执行AHAH请求以更改内容。但我想使用jQuery更改这个旧源,因此没有onclick="onchange('elm...', ...);"。因为我2天前开始学习jQuery,所以我需要一些关于它如何正确的帮助:

$(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 个答案:

答案 0 :(得分:2)

我实际上会将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
});
相关问题