0

我有 4 个选择,我想使用它们的类将选项附加到所有 4 个选择。

// groupings is just an array of strings 

createElement: function(el, value, html) {
  var htmlText = html || value;
  var elm = document.createElement(el);
  elm.value = value;
  elm.innerHTML = htmlText;
  return elm;
}
var htmlOptions = [];

$.each(groupings, function(i, e) {
  htmlOptions.push(_util.createElement("option", e));
});


$('.groupBy_impact').append(htmlOptions);

这似乎在 Chrome 中有效,但在 IE 和 Firefox 中,值超出了选择框。不知道为什么。

如果我执行以下操作,那么它可以跨浏览器工作,但我想避免它

$('#select_groupBy_impact_1').append(htmlOptions);
$('#select_groupBy_impact_2').append($(htmlOptions).clone());
$('#select_groupBy_impact_3').append($(htmlOptions).clone());
$('#select_groupBy_impact_4').append($(htmlOptions).clone());
4

2 回答 2

0

如果你想避免克隆,这样的东西应该可以工作。

$('.groupBy_impact').each(function() {
    $(thid).append(htmlOptions);
});

这避免了克隆并遍历集合中的所有元素。重要的是,您需要使用它的所有元素都有groupBy_impact类。

此外.append()可以接受不同的参数。

您正在使用 jQuery,为什么不将.createElement();返回的 jQuery 对象放入数组中。这将更容易让 jQuery 处理。

甚至更好。创建一个新的 jQuery 集合(而不是一个数组)并将创建的 jQuery 对象附加到那个空的 jQuery 对象,本质上是创建一个新的 DOM 元素集合来添加。

于 2013-10-30T10:09:01.997 回答
0

尝试这样的事情

        var htmlOptions_len = htmlOptions.length;
        for(var i= 0;i<htmlOptions_len;i++ ){
            $('.groupBy_impact').append(htmlOptions[i]);
        }

或者干脆尝试这样的事情

        $.each(groupings, function(i, e) {
            $('.groupBy_impact').append(_util.createElement("option", e));
        });
于 2013-10-30T10:10:04.867 回答