如何禁用&启用Div的所有内容

时间:2013-03-06 12:53:44

标签: javascript jquery html asp.net-mvc

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

 $('#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);
    }

6 个答案:

答案 0 :(得分:3)

要禁用链接,请使用此

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

你的情况:

$('#btnDone').click(function () {
    var $rows = $('#EditorRows');
    $rows.find('input, select, textarea').attr('disabled', true);
    $rows.find('a').unbind('click');
}

答案 1 :(得分:1)

试试这个

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

<强>更新

要禁用:

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

启用:

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

答案 2 :(得分: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

我认为这会解决问题

答案 3 :(得分:0)

使用off方法的jquery。

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

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

或者简单只是在点击锚点时返回false。

$('#Yourdiv a').on('click',function(e)
                  {
                   return false;  // or e.preventDefault();
                  });

答案 4 :(得分:0)

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

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

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

这将再次激活它:

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

其中link是重定向。

答案 5 :(得分:0)

首先想到的解决方案,但它并没有假装优雅 http://jsbin.com/icijox/4/edit