0

さまざまなコントローラー アクションへのリンクを含むドロップダウンを作成したいと考えています。ドロップダウンにオプションを提供するヘルパー メソッドがあります。

   def my_product_options(product)
    if product.status == Product::STATUS_INCOMPLETE
       my_options =  {"Select" => '', "Edit info" => edit_product_path(product)}
    elsif product.status == Product::STATUS_ACTIVE
       my_options =  {"Select" => '', "Edit info" => edit_product_path(product), "Suspend" => suspend_product_path(product)}
    end
    my_options
   end

各製品をループして、各製品のオプションを取得します。しかし、問題は、すべての製品にオプションがロードされたドロップダウンが表示されることですが、クリックは最初の製品に対してのみ機能します。残りのドロップダウンオプションをクリックしても何も起こりません。

ビューでクリックイベントを処理するjqueryがあります

<script>
$('#create_options').change(function() {
    window.location = $(this).find('option:selected').val();
});
</script>

提案や解決策、または別のアプローチがあれば、大いに役立ちます。ありがとう。

4

1 に答える 1

1

はいsame ids for multiple elements、同じドキュメントで使用すると発生します。You have to use class代わりは。

$('.create_options').change(function() {
 //^-----use class instead of id
    window.location = $(this).find('option:selected').val();
});

参照: http://jsfiddle.net/X5583/

In fiddle you can see both "using ids" and "using class" try commenting out each
one by one.

同じページ内の複数の要素に同じ id 表記を使用すると、最初に出現したイベントのみがイベントを取得し、他の要素は取得しません。

于 2013-02-15T04:38:33.117 に答える