如何禁用div

时间:2010-10-14 03:52:55

标签: jquery

您好 我有一个div容器有一些字符串,有些子div有一个文本,如“欢迎”,我想让容器div禁用,即不可点击,如果容器子div有“欢迎”字符串。 我的标记是这样的。

<div>
<span>some text</span>
<span>some text</span>
    <div>
        <span>some text</span>
        <span>some text</span>
    </div>
    <div>
       Welcome
    </div>
    <div>
       Welcome
    </div>

</div>

5 个答案:

答案 0 :(得分:4)

如果要禁用div,请为其命名为“disabled”,例如:

<div class="disabled">Whatever</div>

然后,您可以挂钩所有禁用的div的点击事件,以防止它处理。

$('div.disabled').live('click', function(e) {
    e.stopPropagation();  // you might not want this depending on your intentions
    e.preventDefault();
    return false;
});

答案 1 :(得分:2)

$('div:contains("Welcome")')
  .prop('disabled', true);

或者,如果您只想做恰好具有Welcome的div。

$('div:contains("Welcome")').filter(function() {
    return $(this).html() == 'Welcome';
}).prop('disabled', true);

appears点击disabled="disabled"元素仍然会触发其点击事件。

所以你可以改为off('click'),如果你愿意,可以保留disabled语义(以及作为一个CSS钩子,即div[disabled])。

答案 2 :(得分:0)

我不确定我理解你的问题,我希望这就是你要找的东西:

 $("a").click(function(event){
   event.preventDefault();
   $(this).hide("slow");
 });

如果没有请评论

答案 3 :(得分:0)

我认为一旦用户登录就会将此作为欢迎消息使用...如果用户已登录,则会有链接...如果已登录则用户只会阅读欢迎...

您需要在服务器端脚本而不是客户端执行此操作。

无论如何,如果你仍然需要客户端解决方案。

$('div').each(function (){
  if($this.text().trim()=='Welcome'){
     $(this).click(function (){return false;})
  }
});

如果您使用class名称,这将是一个好主意,因为这比检查所有div更好...修剪将删除之前和之后的所有空格。所以希望这会有所帮助。

答案 4 :(得分:0)

并不像将属性“disabled = disabled”分配给DIV元素那么简单。这会使它变灰,但DIV中的所有元素仍然可以访问和点击。要真正禁用DIV中的内容,您必须选择DIV中的所有后代...

$("div#your-id *").find(function(index) {
 // the jQuery find function will find all descendants inside the DIV
});

然后必须禁用每个找到的元素。但即使这样也不像分配属性“disabled = disabled”那么简单,因为某些元素不响应“禁用”属性,例如链接。通过指定“disabled = disabled”,不会禁用分配了单击事件的元素。您必须删除DIV中所有元素的所有事件。

我创建了一个jQuery插件,可以完全禁用DIV中的内容。使用我的插件,你只需要这样做..

$("div#your-id").disabler({
  disable : true
});

并且DIV中的所有元素都将被禁用。使用它或从中删除代码并从中获取想法。 (http://www.dougestep.com/dme/jquery-disabler-widget)。