2012-03-13 56 views
1

我有一些HTML代碼如何使用jQuery處理IE8中的點擊事件?

<div class="filters-widget bordered"> 
<span class="checkbox" style="background-position: 0px 0px; "></span><input type="checkbox" id="sidecity-control-name-2" name="sidecity" class="styled" value="Brisbane"> 
<label for="sidecity-control-name-2">Brisbane (109)</label> 
</div> 

我有這個JS代碼

$(document).ready(
    function() { 
     registerClick(); 
     function formSubmit() { 
      this.document.getElementById("filters-form").submit(); 
     } 
     function registerClick() { 
      $('.filters-widget.bordered input[type="checkbox"]').bind("click", function() { 
      formSubmit(); 
     }); 
      $('.filters-widget.bordered span[class="checkbox"]').live("click", function() { 
       formSubmit(); 
      }); 
      $('.filters-widget.bordered label').bind("mousedown", function() { 
       var id = $(this).prop("for"); 
       var span = document.getElementById(id).previousSibling; 
       Custom.pushed.call(span); 
      }); 
     }; 
    }); 

我使用jQuery 1.6.1。 在IE8的這部分代碼沒有工作

$('.filters-widget.bordered input[type="checkbox"]').bind("click", function() { 
       formSubmit(); 
      }); 

函數沒有被調用。 如何解決這個問題?

+0

$(」文件管理器等 「)關(」 點擊 「)上(」 點擊。 「,function(){});你確定你有正確的選擇器嗎? – jacqijvv 2012-03-13 18:17:29

+0

此代碼適用於IE9 – BILL 2012-03-13 18:21:25

+0

您爲什麼要在複選框更改事件上進行提交? – jacqijvv 2012-03-13 18:24:39

回答

1

複選框沒有單擊事件。這與jQuery沒有任何關係。

相反的click您可以使用change

$('.filters-widget.bordered input[type="checkbox"]').bind("change", function() { 
    formSubmit(); 
}); 

見jQuery的參考:
http://api.jquery.com/change/

+0

在其他瀏覽器中調用此函數。 – BILL 2012-03-13 18:19:55

+0

@ntziolis我同意,這應該工作,這是改變事件,而不是點擊甚至。再一次,我沒有正確地閱讀這個問題。 – jacqijvv 2012-03-13 18:23:52

+0

@Victor jQuery保證在所有支持的瀏覽器中調用'change'事件,一些瀏覽器也可能會提高'click'事件,但這不是保證,所以只需使用'change'事件,那麼你一定要確保它能正常工作 – ntziolis 2012-03-13 20:03:30