2011-12-30 34 views
8

jQuery làm thế nào tôi có thể vô hiệu hóa một nhấp chuột vào <img> thẻDisable chức năng onclick trên thẻ hình ảnh

$("#ico_cal_id").attr('disabled', 'disabled') or 
$("#img_id").attr('disabled', 'disabled') is not working 

Dưới đây là mã của tôi:

<span id="img_id"><src="ico_calendar.png" id="ico_cal_id" style="cursor: pointer"; onlick="showCalendar(this,'startDay','startMonth','startYear');" /></span> 

bất cứ khi nào tôi bấm vào calendar_image lịch là popping lên

Bất kỳ ý tưởng nào?

Trả lời

2

img yếu tố không có thuộc tính disabled, do đó, việc đặt nó sẽ không ảnh hưởng đến hành vi của nó.

Bạn có thể ngăn chặn sự kiện từ bọt và từ thực hiện xử lý khác với event.stopImmediatePropagation() ...

$("#ico_cal_id").click(function(event) { 
    event.stopImmediatePropagation(); 
}); 

Ngoài ra, bạn có thể sử dụng $("#ico_cal_id").removeAttr("onclick") nếu sự kiện này luôn được gắn liền inline.

+0

Sự khác nhau giữa 'stopPropagation' và' preventDefault' là gì? –

+0

'preventDefault()' ngăn chặn hành động mặc định của phần tử trong khi 'stopPropagation()' ngăn chặn nó khỏi sủi bọt lên cây DOM. – Purag

+0

@JakeFeasel 'preventDefault()' ngăn chặn hành vi trình duyệt mặc định và 'stopPropagation()' ngăn các sự kiện từ sủi bọt đến tổ tiên. – alex

1

Xóa thuộc tính onclick?

$("#ico_cal_id")[0].onclick = null; 

hay:

$("#ico_cal_id").removeAttr("onclick"); 
+0

$ ("# ico_cal_id") [0] .onclick = null; đang làm việc cho tôi, nếu tôi muốn bật lại lần nữa, tôi có thể làm như thế nào? Cảm ơn – user1096909

+0

$ ("# ico_cal_id"). RemoveAttr ("onclick"); cũng hoạt động tốt, làm thế nào tôi có thể thêm các thuộc tính trở lại. – user1096909

9

Hãy thử điều này:

$("#ico_cal_id").prop("onclick", false); 

Thông tin thêm về prop()here.

+0

Điều này có vẻ thú vị, lần đầu tiên tôi nhìn thấy một cái gì đó như thế. Nó là một thực hành tốt để thiết lập lại nó như thế này? –

+0

@dotweb: Có. Trong jQuery, ít nhất. – Purag

0

Những câu trả lời này không hiệu quả đối với tôi vì tôi có một câu đố không phô trương bỏ qua cuộc gọi hàm nội tuyến js đó.

tôi không thích "hack" mã nhưng đối với vấn đề hình ảnh này tôi đã làm điều này

HTML code

<input type="hidden" id="responseMode"/> 

Mã Khi vô hiệu hóa

$("#responseMode").val("response"); 

jquery img nhấp vào

$("#myImageID").click(function() { 
    if ($("#responseMode").val() === "response") { 
     // ?? 
    } else { 
     workedModalCall(); 
    } 

}); 

Nếu không TẤT CẢ câu trả lời khác vẫn được phép cho chức năng bấm jquery của tôi chạy và sau đó gọi hàm chức năng tôi không muốn được gọi là đã xảy ra workModalCall();

Các vấn đề liên quan