2011-01-07 29 views
5

Tôi chỉ muốn bật/tắt onclick và href trên các phần tử (a hoặc div).Tắt (và bật lại) href và onclick trên các thành phần

Tôi không biết cách thực hiện việc này.

Tôi có thể tắt onclick bằng cách thêm trình xử lý vào sự kiện nhấp chuột, nhưng href vẫn khả dụng.


$(this).unbind().click(function(event){ 
    event.preventDefault(); 
    return; 
}); 

Sửa FOUND Một HACK CHO MỘT YẾU TỐ


if ($(this).attr("href")) { 
    $(this).attr("x-href", $(this).attr("href")); 
    $(this).removeAttr("href"); 
} 
+0

Đó là một câu hỏi khá mơ hồ. Chính xác thì bạn đang cố gắng làm gì? Xóa thuộc tính 'href'? –

+0

Ok, xin lỗi;) Tôi chỉ muốn có thể (bằng cách nhấp vào nút), để tắt/bật tất cả các liên kết (nhấp hoặc href) trên các phần tử (div hoặc a) – jibees

Trả lời

5

Ok tôi đã tìm thấy một workaround: đặt một lớp phủ trên div chính chứa tất cả các yếu tố tôi muốn vô hiệu hóa .. Nó chỉ hoạt động.

+1

+1 Hacky, nhưng rất đơn giản ... –

+0

Hoặc sử dụng $ ("# divId"). Hide(); $ ("# divId"). hiển thị(); Cảm ơn bạn vì ý tưởng;) – razvanone

1

Hãy thử điều này để vô hiệu hóa nhấp chuột:

$ (this) .unbind (nghe tiếng 'click');

2

Bạn có thể thử như sau:

$('a, div').click(
    function(e){ 
    return false; 
     // cancels default action *and* stops propagation 

    // or e.preventDefault; 
     // cancels default action without stopping propagation 
}); 

MDC documentation for preventDefault, jQuery documentation for event.preventDefault.

SO question: JavaScript event.preventDefault vs return false.

Tôi không chắc chắn về sự cố của "href vẫn khả dụng" vì sự kiện click bị hủy; tuy nhiên nếu bạn muốn loại bỏ các href từ a yếu tố:

$('a[href]').attr('href','#'); 

sẽ loại bỏ chúng (hoặc, đúng hơn, thay thế các URL với một #).


Sửa để phản ứng lại bình luận (đặt câu hỏi) bởi OP:

Ok, xin lỗi;) Tôi chỉ muốn có thể (bằng cách nhấp vào một nút), để tắt/bật tất cả các liên kết (nhấp chuột hoặc href) so với các yếu tố (div hoặc một)

$('#buttonRemoveClickId, .buttonClassName').click(
function() { 
    $('a, div').unbind('click'); 
}); 
$('#buttonReplaceClickId, .buttonOtherClassName').click(
function() { 
    $('a, div').bind('click'); 
}); 
+0

Tôi đã tìm thấy giải pháp cho các phần tử (bao gồm việc đặt giá trị href vào một thuộc tính x-href để kích hoạt lại nó). Nhưng làm cách nào tôi có thể kích hoạt lại trình xử lý onclick? – jibees

0

Bạn có thể thiết lập các thuộc tính href trực tiếp đến "" để ngăn chặn các gốc hiển thị trong thanh trạng thái, nếu đó là những gì bạn đang yêu cầu.

$(this).unbind().click(function(event){ 
    event.preventDefault(); 
}).attr("href", ""); 

Nếu không, event.preventDefault() đã ngừng các liên kết không thể nhấp được.

6

Nếu bạn trả lại false trong sự kiện onclick, thì href sẽ bị vô hiệu.

  1. này sẽ đi đến Goole: <a href="http://www.google.com" onclick="alert('Go to Google')">Test</a>

  2. này sẽ không đi đến Google: <a href="http://www.google.com" onclick="alert('Go to Google'); return false;">Test</a>

+0

dòng thứ hai phải là: Test pauldendulk

+0

cảm ơn. Bây giờ sửa chữa – wosis

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