2013-07-31 59 views
1

我有一個複選框的html列表,但我不知道如何讓'document.attachEvent'在onclick上找到這些複選框?IE附加事件複選框?

我不確定是否可以設置特定於IE的事件模型,然後在document.attachEvent中創建一個for循環,該循環遍歷每個複選框並處理每個複選框?此外,我的複選框是所有不同的名稱,所以我不能checkboxname.attachEvent,除非我對每個人都這樣做。

我的元素足夠動態,我嘗試將en事件添加到最廣泛的祖先,這是我可以使用該事件來獲取目標和無用的類型的文檔。

非常感謝。

+0

你可能會考慮使用jQuery和事件委託(或自己委託事件)。 –

+1

我真的不知道你在問什麼。 'document.attachEvent'不會「查找」任何東西。你需要找到元素。最終,您需要將處理程序綁定到每個處理程序,或綁定到祖先,並找出所點擊的內容。 –

+0

您可以使用'window.event.srcElement'獲取點擊複選框,或者,如果您已將事件對象傳遞給其參數中的處理函數,則可以使用它而不是'window.event'。如果這不能解決您的問題,請顯示一些代碼... – Teemu

回答

1

一些修補程序到您的代碼:

document.attachEvent('onclick', function (e) { 
    var target = e.srcElement; 
    if (target.type === 'checkbox') { 
     if(target.checked){ 
      button.disabled = false; 
     } else { 
      button.disabled = true; 
     }  
    } 
}); 

第三種說法是不是在IE瀏覽器的事件處理模型中使用。 e.srcElement指向被點擊的元素。

我建議你將複選框包裝在div或其他元素中,然後將事件偵聽器附加到包裝上。當您的頁面變大時,檢查文檔上的所有點擊將是一項耗時的操作。如果您只有一個複選框,最好將處理程序附加到自己的課程中。

+0

恐怕沒有實用的方法。只有使用包裝才能正確解決問題。你有一個表單元素的輸入?如果是這樣,你可以附加一個點擊事件處理程序而不是'document'。 – Teemu

+0

上面的條件語句存在問題,應該是'==',但代碼很好。謝謝。 –

+0

@AprilRandolph哈哈......我從你的小提琴中複製粘貼它:D,固定。 – Teemu