您好
我有一个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>
答案 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)。