2012-03-13 57 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