将元素设置为不可点击,然后设置为可点击

时间:2013-07-04 05:45:09

标签: jquery

我希望div元素设置为不可点击,然后在点击另一个元素后将其设置为可点击。

所以,当点击.case时:

$('.case').click(function() {  
$('#patient').addClass('active').on('click');
});

但是当我进一步向下时,如何在第一个实例中将#patient设置为unlickable:

$('#patient').click(function() { 
alert('clicked');
});

6 个答案:

答案 0 :(得分:33)

$('#patient').on('click', function() {
    if ( $(this).hasClass('active') ) {
        // do whatever when it's active.
    }
    return false;
});

如果您只是希望它不接受,可以将其添加到您的css(pointer-events):

#patient { pointer-events: none; }
#patient.active { pointer-events: auto; }

答案 1 :(得分:7)

不可点击:

$("#ElementName").css("pointer-events","none");

可点击:

$("#ElementName").css("pointer-events","auto");

答案 2 :(得分:6)

$('#patient').unbind("click");

我希望这会奏效。

答案 3 :(得分:2)

根据您的需要(只有一个或多个元素,无论是否创建动态元素),您可以使用:

1)用于检查是否已完成对其他元素的第一次单击的变量

var isActive  = false;

$('.case').click(function() {  
    isActive = true;
});

$('#patient').click(function(){
    if(isActive === false)
        return false;

    //Your behaviour
});

2)在第一个元素的点击事件中定义点击功能

$('.case').on('click',function() { 
    //Make element clickable 
    $('#patient').on('click',function(){
        //Your behaviour
    });
});

然后,您可以使用off删除点击事件

答案 4 :(得分:1)

for first instance..add deactive class to patient div tag...

$('#patient').click(function() { 
if($(this).hasClass('deactive'))
 return;
else
//do what you want to do.
});

on case click...

$('.case').click(function() {  
$('#patient').removeClass('deactive');
});

答案 5 :(得分:0)

使用触发器

$('#patient').addClass('active').trigger('click');

参考:.trigger()