0

这是我的代码 -

var obj = $('[id$=ddlInsert4]')
obj.disable = true;

obj 是一个下拉列表,但 disable 调用不会禁用下拉列表。

alert(obj.val()) //this returns the correct value

由于我的警报返回正确的值,我知道我的 jQuery 语法是正确的。我错过了什么?

4

2 回答 2

5

尝试使用.prop如下,

$('[id$=ddlInsert4]').prop('disabled', true);

您可以使用.prop上面的 jQuery 函数

或者

$('[id$=ddlInsert4]')返回一个 jquery 对象(选择器总是返回 jQuery 对象的数组)所以你不能像这样在 jQuery 对象上设置 DOM 属性..

您需要循环迭代并设置属性 ex: $('[id$=ddlInsert4]')[i].disabled = truewhere iis the index.

于 2012-05-10T21:26:16.527 回答
2

obj是一个 jQuery 对象,而不是一个 DOM 元素。你需要做$(obj).prop('disabled', true);。或者更好的是,如果您不需要obj其他地方的变量,只需执行以下操作:

$('[id$=ddlInsert4]').prop('disabled', true)

要与原生 DOM 元素交互,您可以执行[0](或.get(0))。然后你可以这样做:

obj[0].disabled = true;

(请注意,该属性disabled不是disable

注意:$('[id$=ddlInsert4]')可以返回多个元素,并且[0]只会得到第一个。如果有多个,您需要遍历所有这些。不过我建议使用 jQuery.prop方法,因为它会为您循环遍历所有元素。

于 2012-05-10T21:27:25.097 回答