2013-03-22 41 views
0

Sql Fiddle example爲什麼jQuery .prop看起來不工作?

$('#myBox').click(function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    $('#myBox').prop("checked", !$('#myBox').prop("checked")); 
}); 

,以便檢查來回切換是通過我的javascript,而不是由默認的行爲控制,它是行不通的,我這個附加的複選框。我想不通爲什麼!

我這樣做的原因:IE有一個雙擊過濾器,可以這麼說,所以雙擊複選框只會註冊爲一次單擊。這恰好可以阻止人們快速切換複選框,這非常奇怪,這是我的應用程序所需的功能。所以我只是取消它的默認功能,並用JavaScript/jQuery手動捕獲點擊並以這種方式切換,從而消除了「速度限制」。除了我不知道如何停止點擊切換,因此這個問題。

+1

你爲什麼要阻止的默認操作**和**自己切換? – 2013-03-22 21:36:47

+0

下方看到這個問題的評論:http://stackoverflow.com/questions/15578792/how-to-ignore-clicks-for-checkboxes – Aerovistae 2013-03-22 21:37:43

+0

確定。在這種情況下,您可能希望從其他元素切換該複選框,這對您的示例更加實用。 – 2013-03-22 21:39:00

回答

0
setTimeout(function() { 
    $('#myBox').prop("checked", !$('#myBox').prop("checked")); 
}, 1); 

只需要1毫秒的延遲計時器。

看到這個your jsFiddle, modified

+0

爲什麼在地球上解決了這個問題? – Aerovistae 2013-03-22 21:39:14

+0

*爲什麼*是一個完全不同的問題。嘗試在這裏搜索。 – 2013-03-22 21:42:59

+0

........謝謝? – Aerovistae 2013-03-22 21:45:27

0

我猜你要當你的複選框改變運行的東西...

在這種情況下,你應該趕上change事件:

$('#myBox').bind('change', function() { 
    // Do checks here, if you don't want it to change, then deal with it then 
});