1

我希望使用 jQuery 禁用指定表列(td)的所有元素(控件)。

我的表如下所示:

<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>都有多个控件,例如选择、复选框、按钮,但并非对每一行和每一列都是固定的。我希望<td>通过使用它的 ID 来禁用指定的所有控件。

我使用了以下 jQuery,但它似乎没有完成这项工作:

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

我也尝试了以下方法,但它似乎仍然不起作用:

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

难道我做错了什么?请帮忙。

谢谢!

4

3 回答 3

3

尝试这个

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

:input选择所有输入元素

于 2012-02-26T08:42:28.530 回答
0

如果您需要禁用列中的所有控件(多行),我认为最好的方法是为该td列中的每个控件分配一个类。

例如,如果您想禁用第二列中的控件,您可以执行类似的操作:

<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);

它应该工作...

于 2013-01-08T09:41:10.600 回答
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 或更高版本,请使用 prop(),否则使用 attr()。

于 2014-02-03T09:29:49.437 回答