2009-07-05 142 views
3

所以,我有JQuery动态生成控件。输入控件被称为EnterLink +生成的控件的数量。在生成新的输入控件时,我想更改先前创建的输入以禁用它。现在我的代码看起来如此,它不起作用。JQuery动态ID控件属性

if (rowCount > 0) { 
        var last = rowCount - 1; 
        $("#EnterLink" + last).disabled = true; 
        } 

这看起来像应该工作,我检查了控件的ID,这就像他们格式化。

回答

10

替换此:

$("#EnterLink" + last).disabled = true; 

有了这个:

$("#EnterLink" + last).attr('disabled', true); 

的jQuery不公开定期的DOM通过其$()功能属性直接。你在那里有一个包装集(即授予,只会匹配1个元素,但仍是一个集),它扩展了元素并将所有jQuery的优点添加到它中。

如果你想获得的#EnterLinkX本机的DOM元素,你可以这样做:

$("#EnterLink" + last)[0].disabled = true; 

这工作,因为$()返回值是类似阵列的结构,其中包含匹配的元素。 [0]将包含第一个(在这种情况下只)匹配。这会让你访问像innerHTML等。 99%的时间,尽管如此,你最好使用“jQuery方式”,因为这是图书馆的全部要点。在这种情况下,您可以使用它的attr函数来设置该属性,并且它的removeAttr函数可以删除被禁用的值,如果您想要的话。

+0

Gracias! 15个特征极限 – 2009-07-05 08:21:55

+0

完美的答案 - 完整,简洁,正确! :) – 2009-10-30 17:26:01

2

如果你想禁用一个按钮,它是以下内容。

$( “#EnterLink” +最后).attr( “已禁用”,真正的); 或 $(“#EnterLink”+ last).attr(“disabled”,“disabled”);