2013-07-04 30 views
8

Tôi muốn có một phần tử div được đặt thành không thể nhấp và sau đó đặt thành phần tử có thể nhấp sau khi một phần tử khác được nhấp.Đặt phần tử thành không thể nhấp và sau đó có thể nhấp

Vì vậy, khi .case được nhấp:

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

Nhưng làm thế nào để tôi thiết #patient để thể nhấp vào trong trường hợp đầu tiên khi tôi có tiếp tục xuống:

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

"Có thể nhấp" nghĩa là gì? Bạn có nghĩa là có một sự kiện bấm? Bạn có nghĩa là có 'con trỏ: con trỏ'? – AlexQueue

+0

để chấp nhận một sự kiện bấm .. – IlludiumPu36

Trả lời

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

Nếu bạn chỉ muốn nó không chấp nhận, bạn có thể thêm nó vào css của bạn (pointer-events):

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

Cảm ơn, tôi có thể thấy cách này có thể làm việc, nhưng tôi đã tự hỏi nếu có một cách để thiết lập một yếu tố để không bấm các sự kiện bấm ... Tôi sẽ cung cấp cho giải pháp của bạn một thử thời gian chờ đợi. – IlludiumPu36

+1

Đã thêm css sẽ ngừng sự kiện nhấp chuột được kích hoạt trong hầu hết các trình duyệt: http://caniuse.com/#feat=pointer-events – kalley

+0

Bốn ngày trên SO và đã có 581 điểm ...! Vâng, bạn có nhiều hơn bây giờ, rất cám ơn sự giúp đỡ của bạn! – IlludiumPu36

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

Tôi hy vọng điều này sẽ hiệu quả.

+1

Cái này phù hợp với tôi! Cảm ơn bạn! – shaosh

+0

Đó là một giải pháp gọn gàng! – greentec

0

Sử dụng kích hoạt

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

THAM KHẢO: .trigger()

2

Tùy thuộc vào nhu cầu của bạn (Chỉ có một yếu tố hoặc nhiều người, tạo yếu tố năng động hay không), bạn có thể sử dụng:

1) Một biến để kiểm tra xem nhấp chuột đầu tiên trên phần tử khác đã được thực hiện chưa

var isActive = false; 

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

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

    //Your behaviour 
}); 

2) Xác định các chức năng nhấp chuột trong sự kiện click của phần tử đầu tiên

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

Sau đó, bạn có thể sử dụng off để loại bỏ các sự kiện click

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'); 
}); 
2

không nhấp được:

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

Clickable :

$("#ElementName").css("pointer-events","auto"); 
Các vấn đề liên quan