2012-02-26 45 views
1

我正在寻找使用jQuery禁用指定表列(td's)的所有元素(控件)。使用jQuery禁用表列的所有控件

我的表如下所示:动态生成

<table> 
    <tr> 
    <td id="1.1.tcol"></td> 
    <td id="1.2.tcol"></td> 
    <td id="1.3.tcol"></td> 
    <td id="1.4.tcol"></td> 
    </tr> 
    <tr> 
    <td id="2.1.tcol"></td> 
    <td id="2.2.tcol"></td> 
    <td id="2.3.tcol"></td> 
    <td id="2.4.tcol"></td> 
    </tr> 
</table> 

表,但是这是它是如何呈现的。现在,我的每个<td>都有多个控件,如选择,复选框,按钮,但对于每个行和列都不固定。我正在通过使用它的Id来禁用指定的<td>的所有控件。

我用下面的jQuery,但它并不seemt做的工作:

$('#' + td_id).select('*').each(function(element){element.disabled=true});

我也曾尝试以下,仍似乎不工作:

$('#' + td_id).attr('disabled', 'false');

我做错了什么?请帮忙。

谢谢!

回答

2

试试这个

$('#' + td_id).find(':input').prop("disabled", true); 

:input选择所有投入要素

+0

似乎没有工作。并非所有控件都是“输入”类型。有选择下拉菜单,文本框,按钮,复选框。 – Anupam 2012-02-26 08:46:15

+1

请检查答案中的链接..它确实选择了所有输入元素 – 2012-02-26 08:47:46

+0

糟糕...抱歉。不知道:输入选择所有的控件。认为它只选择输入类型。但是您提供的代码不会禁用。 :( – Anupam 2012-02-26 08:52:47

0

,如果你需要禁用列中的所有控件(multilpe行)我认为最好的办法是将类分配给该列中的每个td

对于examle如果你想在第二列禁用的控制,你可以做同样的事情:

<table> 
    <tr> 
    <td id="1.1.tcol"></td> 
    <td id="1.2.tcol" class="col-2"></td> 
    <td id="1.3.tcol"></td> 
    <td id="1.4.tcol"></td> 
    </tr> 
    <tr> 
    <td id="2.1.tcol"></td> 
    <td id="2.2.tcol" class="col-2"></td> 
    <td id="2.3.tcol"></td> 
    <td id="2.4.tcol"></td> 
    </tr> 
</table> 

比,使用JQuery,你可以这样做:

$(".col-2 :input').prop("disabled", true); 

它应该工作。 ..

0

我认为这应该工作:

<table> 
<tr><td> 
    <input type="text" /> 
    <input type="radio" /> 
    <input type="checkbox" /> 
    <select> 
     <option>1233</option> 
    </select> 
    </td> 
</tr> 
<tr><td> 
    <input type="text" /> 
    <input type="radio" /> 
    <input type="checkbox" /> 
    <select> 
     <option>second</option> 
    </select> 
    </td> 
</tr> 

我们仅禁用第一 “TD” 你应该使用:

$('tr').children().eq(0).find(':input').prop("disabled", true); 

如果您正在使用JQuery1.6以上使用道具()其他使用ATTR()。