2011-05-02 69 views
0

有我在这里的形式对一个问题更换一个复选框:的Javascript标签+复选框点击问题,具有图像

http://lexusevents.sanscode.com/datawash/details/pagetwo/1a08c087bdd3f0f85359a2a2e61ca74a

基本上你有什么是坐在里面一堆<img>的像这样一个复选框标签:

<label for="mybox"> 
    <input type="checkbox" id="mybox"> 
    <img src=""> 
</label> 

当您点击Firefox或Chrome的图像,标签触发的复选框,我狡猾的CSS样式改变图像有一些文字坐在上面,表明它已被选中。

现在的问题是,当我在IE中,标签点击不起作用。它不会激发复选框。所以如果不完全知道我为什么决定我应该尝试使用jquery来修复它。

if ($.browser.msie) { 


     $('.checkbox label').bind('click', function() { 

     checkbx = $(this).children('input'); 
      me = $(this); 
      checkbx.click(); 

      if (checkbx.is(':checked')) me.addClass('checked'); 
      else me.removeClass('checked'); 
     }); 

     $('.checkbox label').each(function() { 
      var c = $('input', this); 
      var me = $(this); 

      if (c.is(':checked')) me.addClass('checked'); 
      else me.removeClass('checked'); 
     }); 

    } 

此代码对与checkbx = $(th开头的行错误......显然是有属性不支持此方法的错误,但我不能明白为什么。

有人可以帮我吗?

回答

0

这可能是由于你的表单其他输入:

// You are selecting here all the input tag. 
checkbx = $(this).children('input'); 

根据你的HTML,你也有过这样的标签:

<input type="hidden" name="form_id" value="1a08c087bdd3f0f85359a2a2e61ca74a"> 

可能在IE中会引起问题。你可能想改变你的查询:

来源:

checkbx = $(this).children('input'); 

要(最有可能是这样或在查询更具体的选择复选框只输入型):

checkbx = $(this).children(':checkbox');