2012-11-30 24 views
5

Có thể xóa thuộc tính jquery one rõ ràng của nó? ví dụ cho htmlcó thể rõ ràng jquery phương pháp `one`

<div id="button">button</div> 

    <div id="clearOneProperty">clear one property</div> 

và js

$("#button").one("click", function() { 
    alert("blah"); 
}); 

$("#clearOneProperty").on("click", function() { 
    // clear "one" property, that is after this event, I want "#button" to work again 
}); 

Demo http://jsfiddle.net/RzzCu/2/

Vì vậy, nếu nhấp chuột #button div, cảnh báo đã xảy ra chỉ một lần phải không?

Và tôi muốn điều đó, khi nhấp vào #clearOneProperty, đặt lại một thuộc tính. Có thể của nó?

P.S. Tôi không hỏi làm thế nào để làm điều này với những cách khác, tôi quan tâm chính xác: "có thể rõ ràng jquery one phương pháp?". Cảm ơn.

+2

Khi bạn nói "rõ ràng một phương pháp()" Ý anh là, tái gắn nó để '# button' có thể được bấm một lần nữa, hoặc làm bạn có nghĩa là loại bỏ các 'một() 'sự kiện để nó không thể được nhấp? –

+0

'đính kèm lại để nút #button có thể được nhấp lại ' – RIKI

Trả lời

6

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

function bindButton() { 
    $("#button").unbind('click').one("click", function() { 
     alert("blah"); 
    }); 
} 

bindButton(); 

$("#clearOneProperty").on("click", function() { 
    bindButton(); 
}); 

Updated fiddle

+0

Vâng, đây là câu trả lời, cảm ơn. – RIKI

+0

Không có vấn đề, vui lòng giúp đỡ :) –

0

Sử dụng phương pháp unbind()

$("#button").unbind(); 
+2

Lưu ý rằng OP muốn đính kèm lại sự kiện, không hủy liên kết sự kiện đó. –

+0

Tôi nghĩ rằng OP muốn trái: ràng buộc một lần nữa nút khi nó được tái định cư. –

+0

Một ví dụ tốt về những gì OP muốn là ví dụ chọn một người bạn từ danh sách bạn bè của bạn, thêm biểu mẫu trò chuyện vào một số TAB.Khi nhấp để đóng tab, hãy liên kết lại một chức năng với danh sách bạn bè, để tab có thể được mở một lần nữa.Nếu không sử dụng một trong danh sách bạn bè, nhiều trường hợp của "người bạn" này sẽ hiển thị trong danh sách TAB. – HenryW

1

Chỉ rebind nó bên trong hàm.

$("#button").one("click", function() { 
    alert("blah"); 
}); 

$("#clearOneProperty").one("click", function() { 
    $('#button').one("click", function() { 
    alert("blah"); 
}); 
}); 

đây một fiddle

0

Hãy thử

$('#button').unbind('click'); 
+0

Lưu ý rằng OP muốn đính kèm lại sự kiện, không hủy liên kết sự kiện đó. –

+2

downvote là một chút khắc nghiệt, không? Câu hỏi được viết khá mơ hồ ... – Elliott

3

Các one unbinds tự của nó đối với sự thỉnh nguyện đầu tiên như đã nêu "Các hình thức đầu tiên của phương pháp này là giống hệt nhau để .bind(), except that the handler is unbound after its first invocation" , jQuery Documentation * Vì vậy, bạn cần phải liên kết lại một lần nữa *.

Live Demo

$("#button").one("click", onefunction); 

function onefunction() { 
    alert("blah"); 
} 
$("#clearOneProperty").one("click", function() {  
    $("#button").one("click", onefunction); 
});​ 
+1

Đây thực sự là câu trả lời sạch sẽ duy nhất! –

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