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 回答