jQuery - 迭代兄弟姐妹并识别按钮

时间:2016-03-28 19:10:32

标签: jquery

我有许多<select>个对象需要处理他们的change()事件。我没有完全控制DOM,因为插件在运行时正在做一些事情以使其更复杂。结果,我发现自己的button背景颜色需要根据所选项目的值进行更改。

我可以从所选项目中获取颜色的十六进制值。 <button><select>将是兄弟姐妹,因此我正在使用该关系进行迭代,目的是在找到此按钮时停止。

$('select').on('change', function() {
    var this_color = $(this).val();

    $(this).siblings().each(function(i, elem) {

        if (elem.is(":button")) {
            elem.css('background-color', this_color);
            return false;
        }
    });
});

但这会引发错误

  

未捕获的TypeError:elem.is不是函数

我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:3)

在您的情况下,elem是一个普通节点对象,您必须将其转换为jquery对象才能使用.is()

if($(elem).is(":button")) {
  $(elem).css('background-color', this_color);

由于您使用.each()迭代jquery元素集合,因此可以使用$(this)而不是显式接收element作为参数,

 $(this).siblings().each(function() {
   var _this = $(this);
   if(_this.is(":button")){
    _this.css('background-color', this_color);
    return false;
   }
 });