2009-08-26 59 views
0

我有一个下拉菜单类似<select>,从外部js函数contolled。
HTML:像jQuery选择类似onChange事件

<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 -function使用jQuery:

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

其中updateData(index)确实的AHAH请求根据参数index改变内容。但是我想用jQuery来改变这个老源,因此没有onclick="onchange('elm...', ...);"。而且因为我已经开始学习jQuery的3天前,我需要了解它是如何正确一些帮助:

$(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); 
    }); 
}); 

,我做的东西错了...谢谢您的解答!

回答

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 
}); 
+0

通过从定位点中删除javascript:void(0),您可以使用有效的href填充该属性,以便在用户没有启用javascript的情况下进行备份。 – jeef3 2009-08-26 22:42:22

+0

它的工作原理! :)谢谢 – Vov4ik 2009-08-26 22:48:10

+0

不客气:) – jeef3 2009-08-27 00:06:48