我有许多<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不是函数
我做错了什么?谢谢!
答案 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;
}
});