下面是我的jQuery代码,我必须更改属性:
我有2个类似项目的列表,我必须禁用第二个列表中第一个的选定项目,并且在第一个列表中我有前缀lstrYM与项目,在第二个列表中有前缀ltrY2与项目 < / p>
我在jquery的一周,所以我不知道如何找到,所以我跑了回路
$('#lsltrYMaxis').change(function () {
var flg = 0;
$('#lsltrYMaxis option').each(function () {
var val = this.value;
val = val.replace("YMa", "Y2a"); // find y2 axis with similar index
var chk = $(this).is(':checked'); // checked
// alert(val);
// alert(chk);
$('#lsltrY2axis option').each(function () {
var val2 = this.value;
alert(val + ";" + val2 + ";" + chk);
if (val === val2) {
if (chk === true) {
alert((this).value);
$(this).attr({ 'disabled': true, 'aria-disabled': true, 'checked': false, 'aria-selected': false }).addClass('ui-state-disabled');
alert('done');
flg = 1;
return false;
}
else {
$(this).attr({ 'disabled': false, 'aria-disabled': false }).removeClass('ui-state-disabled');
flg = 1;
return false;
}
}
});
if (flg == 1)
return false;
});
});
但它说
(this).attr
不是函数
应用属性
我做错了什么?
答案 0 :(得分:1)
inside .each()
内部回调this
是指没有.attr()
方法的dom对象 - 它是由jQuery提供的,所以你需要获取元素的jQuery包装器,这样你就可以了需要使用$(this).attr()
$('#lsltrY2axis option').each(function () {
var val2 = this.value;
alert(val + ";" + val2 + ";" + chk);
if (val == val2 && chk == true) {
$(this).attr({ 'disabled': true, 'aria-disabled': true, 'checked': false, 'aria-selected': false }).addClass('ui-state-disabled');
}
else {
$(this).attr({ 'disabled': false, 'aria-disabled': false }).removeClass('ui-state-disabled');
}
});
答案 1 :(得分:1)
使用
$(this).attr([attribute is here]);
使用this
指的是DOM。
此外,您必须使用this
$(this)
次出现
答案 2 :(得分:1)
我已将this
更改为$(this)
然后==
到===
希望它有效
$('#lsltrY2axis option').each(function () {
var val2 = $(this).value;
alert(val + ";" + val2 + ";" + chk);
if (val === val2 && chk === true) {
$(this).attr({ 'disabled': true, 'aria-disabled': true, 'checked': false, 'aria-selected': false }).addClass('ui-state-disabled');
}
else {
$(this).attr({ 'disabled': false, 'aria-disabled': false }).removeClass('ui-state-disabled');
}
});
答案 3 :(得分:0)
你应该写:
$(this).attr