2014-09-25 52 views
-1

我目前正在使用jquery,並將事件處理程序綁定到複選框以將用戶帶到新頁面。問題在於,這並不能很好地擴展,因爲綁定1500個複選框會導致速度較慢的機器上的ie8在花費2-3秒來綁定這些事件處理程序時認爲腳本沒有響應。如何使複選框轉到網址?

我能想到的唯一的其他解決方案是使用圖像而不是複選框,以便它們可以被標記包圍而不是具有1500個以上的事件處理程序綁定。我不喜歡這個解決方案,因爲我不認爲這是重寫瀏覽器的默認行爲/風格的好習慣。

有沒有人知道一個可擴展的方式,當用戶點擊一個複選框時將用戶帶到一個網址?

+1

的http://stackoverflow.com/questions/10453300/jquery-how-do-i-call-a-url-by-checking-a-checkbox – 2014-09-25 19:48:28

+1

爲什麼不使用錨,因爲他們可能的複製無論如何將會改變網頁? – 2014-09-25 19:48:40

+0

如果您使用jQuery,您應該查看使用委託事件並將您的點擊處理程序應用到容器,或者可能是''對象。然而,使用複選框作爲鏈接顛覆了它的目的。爲什麼要在檢查後立即丟棄該信息時讓事情發生變化? – 2014-09-25 19:48:47

回答

2

新的jQuery recommandation是把處理器在共同的父,像document,使用.on

$(document).on("click", ":checkbox", function() { 
    // your handler code 
}); 

處理程序不是連接到您的1500複選框,但這次事件自然泡到檢查文檔如果事件目標匹配您的選擇器。

0
$(document).ready(function() { 
    $(document).on('click', 'checkbox', function() { // <-- assuming your checkboxes are loaded asynchronously 
     window.location= "http://www.example.com"; 
    }); 
}); 
0

你可以只使用「的onchange」的方法來檢查它是否「檢查」,然後改變「document.location.href」給你想要的鏈接。

<input type="checkbox" onchange="if(this.checked) document.location.href='http://www.google.com';"/>Go to google 
+0

我相信這是避免onchange屬性的最佳做法。無論如何,這是否仍然綁定每個事件處理程序? – user2932397 2014-09-29 19:03:18

+0

我更喜歡這種方式,因爲它可以簡單地更改網址,並且可以動態設置。是的,我們需要避免使用'onchange'屬性,因爲您無法輕鬆解除綁定,但是在這種特殊情況下,複選框會導致另一個url,因此無論如何將會終止事件。 – 2014-09-29 19:13:48