2009-08-26 11 views
0

私は外部のjs関数からのコントラストのある<select>のような小さなドロップダウンメニューを持っています。
HTML:jQueryのを使用してjQueryを使用したSELECTのような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:

updateData(index)引数 indexに応じて内容を変更するAHAH要求を行い
function onchange(id, index) { 
    $("#price_type").html($("#"+id).html()); 
    updateData(index); 
} 

。しかし、私はこの古いソースをjQueryを使用して変更したいので、onclick="onchange('elm...', ...);"を使用しないでください。ご回答いただきありがとうございます...

$(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日前にjQueryを学ぶために始めたので、私はそれが正しい方法についてのいくつかの助けが必要!

答えて

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を埋め込むことができます。有効なhrefは、ユーザーにJavaScriptが有効になっていない場合のバックアップになります。 – jeef3

+0

それは動作します! :)ありがとう – Vov4ik

+0

あなたは大歓迎です:) – jeef3

関連する問題