2013-03-06 41 views
0

我试图禁用Div标签的所有元素。我在输入类型上取得成功。但无法禁用链接。 我也试过this,但它不工作。 这里是我试过的代码(但它适用于仅输入):如何禁用和启用Div的所有内容

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

我知道禁用输入类型,但我想达到那种机制的链接。

1 PartialView代码:

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

第二PartialView

<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); 
    } 
+0

禁用?你什么意思。只有支持此属性的输入字段。您可以改为隐藏div。 – 2013-03-06 12:54:50

+0

@ h2ooooooo,我希望没有任何事情发生时,我点击它。 – Dhwani 2013-03-06 12:56:06

回答

1

试试这个

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

更新

要禁用:

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

要启用:

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

它的作品,但我可以再次链接? – Dhwani 2013-03-06 13:20:55

3

要禁用链接在你的情况下使用这个

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

矿石:

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

无法正常工作。我已经尝试过了。 – Dhwani 2013-03-06 13:07:35

+0

它应该工作。链接是否仍然有效? – 2013-03-06 13:11:06

+0

链接仍可点击。 – Dhwani 2013-03-06 13:12:08

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 

我认为这将采取问题

的护理
0

使用jquery的关闭方法。

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

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

否则简单刚刚返回false时,锚点击。

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

不工作。我不知道为什么发生这种情况。 – Dhwani 2013-03-06 13:10:33

0

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

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

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

这将活跃一遍:

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

其中link是重定向。

+0

我想要一个切换类型的效果。启用和禁用。 – Dhwani 2013-03-06 13:09:11

+0

解释更好。你想什么时候开火?我们可以更好地回答你。 – steo 2013-03-06 13:12:47

+0

我想禁用点击链接。 – Dhwani 2013-03-06 13:14:58

0

第一个解决方案日出现在脑海中,但它并不假装优雅 http://jsbin.com/icijox/4/edit

+0

没有任何工作。 – Dhwani 2013-03-06 13:58:32

+0

你是什么意思,没有任何工作,我只是看到,一切都完成了。我为您做了基础,您可以根据自己的目的更改此代码。只需点击“使用JS运行”并打开控制台标签以查看反应 – 2013-03-06 14:07:46

+0

它给我带来了帮助:第1行:var state ='enable'; ---意外的''。 – Dhwani 2013-03-06 14:18:23

相关问题