2

在我的 Rails 3.2 应用程序中,我有一些类似于显示许多照片的相册页面的内容。在每张照片下都有一个选择框,用户可以在其中从多个选项中进行选择,格式如下:

<select id="photo_1">
  <option value=value_1>Name of Value 1</option>
  ...
  <option value=value_n>Name of Value N</option>
</select>

问题是,值列表很长(有 100 种可能性),但每张照片都完全相同。由于每个相册可能有数十张照片,因此每次将照片加载到页面时让服务器发送完整列表似乎效率低下。有没有更有效的方法来做到这一点,例如,加载

  <option value=value_1>Name of Value 1</option>
  ...
  <option value=value_n>Name of Value N</option>

只在相册页面生成一次(可能作为隐藏字段),然后使用 jQuery/javascript 在客户端将其填充到照片的唯一标签中,当照片加载到页面时?(注意:照片是动态加载的,所以有些照片可能会在相册页面初始加载后加载,因为用户上传它们。)

4

2 回答 2

1

您可以将选项复制到其他元素

HTML

<select id="photo_1">
  <option value="value_">Pick</option>    
  <option value="value_1">Name of Value 1</option>
  <option value="value_2">Name of Value 2</option>
  <option value="value_3">Name of Value 3</option>
</select>
<select class="copy"></select>
<select class="copy"></select>

JavaScript

var mainSelectOptions = $("#photo_1 option").clone();
var selects = jQuery(".copy").append(mainSelectOptions);

示例:JSFiddle

于 2012-10-30T17:37:26.300 回答
1

如果需要它的 s 有一个公共类会更好<select>,但这适用于<select>ID 以开头的任何人photo(尽管您可能应该使用name而不是id)。

$(function () {
    $("select[id^=photo]").each(function () {
       $(this).html($("#hidden_select").html());
    });
});​

JSFIDDLE

于 2012-10-30T17:37:42.937 回答