0

我正在尝试禁用 Div 标签的所有元素。我在输入类型上取得了成功。但无法禁用链接。我也试过这个,但它不起作用。这是我尝试过的代码(但它仅适用于输入):

 $('#EditorRows *').attr('disabled', true);

我知道禁用输入类型,但我想为链接实现这种类型的机制。

第一次部分查看代码:

<div id="Part2">
<div id="EditorRows">
<%= Html.ActionLink("Add another...", "Add", null, new { id = "addItem" }) %>
<%Html.RenderPartial("_InsertServices", Model);%>
</div>
<div id="DontAppend">
<input type="button" id="btnEdit" value="Edit" hidden="hidden"/>
<input type="button" id="btnDone" value="Done" />
</div>
</div>

第二部分视图

<div class="EditorRow">
<% using (Html.BeginCollectionItem("services"))
{ %>
<table id="table1">
<tr><td>
NOS:</td><td>
<%:Html.DropDownListFor(model=>model.Id,(SelectList)ViewData["crmServiceType"] as SelectList,"---")%>
</td>
<td>
Comment:</td><td>
<%=Html.TextBoxFor(model => model.Comment, new { size = "20" })%></td>
<td>
<a href="#" class="deleteRow">delete</a>
</td>
</tr>
</table>
<% } %>
</div>

脚本:

    $("#addItem").click(function () {
            $.ajax({
                url: this.href,
                cache: false,
                success: function (html) { $("#EditorRows").append(html); }
            });
            return false;
        });

        $("a.deleteRow").live("click", function () {
            $(this).parents("div.EditorRow:first").remove();
            return false;
        });

$('#btnDone').click(function () {
      $('#EditorRows *').attr('disabled', true);
    }
    $('#btnEdit').click(function () {
      $('#EditorRows *').attr('disabled', false);
    }
4

6 回答 6

3

要禁用链接,请使用此

$('div a').unbind('click');

矿石在你的情况下:

$('#btnDone').click(function () {
    var $rows = $('#EditorRows');
    $rows.find('input, select, textarea').attr('disabled', true);
    $rows.find('a').unbind('click');
}
于 2013-03-06T12:57:19.943 回答
2

尝试这个

$('#EditorRows').find('a').each(function(){
   $(this).replaceWith($(this).text());
});

更新

要禁用:

$('#EditorRows').find('a').bind('click', false);

启用 :

$('#EditorRows').find('a').unbind('click', false);
于 2013-03-06T13:17:43.643 回答
0

想到的第一个解决方案,但它并不假装优雅 http://jsbin.com/icijox/4/edit

于 2013-03-06T13:56:41.857 回答
0
$('div').find(':input').prop('disabled',true);//this line will this able all inputs including buttons.
$('div').find('a').each(function(){
   $(this).removeAttr('href');
   $(this).unbind('click');
});//this will take care of the links

我认为这会解决问题

于 2013-03-06T13:00:44.547 回答
0

使用 jquery 的 off 方法。

$('#Yourdiv a').off('click');

$('#yourDiv').find('input').attr('disabled',true);

否则简单的只是在单击锚点时返回 false 。

$('#Yourdiv a').on('click',function(e)
                  {
                   return false;  // or e.preventDefault();
                  });
于 2013-03-06T13:00:45.120 回答
0

它仅适用于输入,因为它们具有disable属性。要禁用链接尝试

如果您只想删除链接重定向。

$("#youdivname").find('a').removeAttr('href') 

这将再次激活它:

$("#yourdivname").find('a').attr('href','link')

link重定向在哪里。

于 2013-03-06T13:06:00.270 回答