2012-10-05 38 views
0

我有一个奇怪的问题。我正在为Magento开发一些东西。我添加了链接“选择所有类别”,并添加一个jQuery事件来检查所有复选框,当我点击它。它工作的很好,但不知何故,HTML没有更新,Magento无法看到所有输入都被选中。但是当我手动点击一个复选框时,它会更新html(我正在查看控制台)并且Magento保存按钮工作得很好。复选框的状态看起来已更新,但实际上并未更新

如何解决此问题?我不知道我还应该做什么来执行更新HTML。它看起来像它的工作(复选框被选中),但请看看控制台和HTML。 Html必须更新。

我创建的jsfiddle:here

+0

能否请您发表您的HTML和jQuery代码? –

+0

@LaurentBrieu ..他们做到了。 – Daedalus

+1

我已经创建了小提琴 – bla0009

回答

1

只需选中所有复选框,像this

您的is(':checked') IF声明似乎是错误的,因为它应该被包含在.each()上,所以它适用于所有复选框,请尝试在我链接的小提琴上更简单的方法。

+0

那把小提琴不会永远在那里;如果我是你,我会在这里发布你的代码给其他人在未来寻求这个答案。 – Daedalus

+0

它仍然不会更新html。所以,它不会工作正常。 – bla0009

+0

有时它不会显示在控制台中。试试吧 – Jashwant

1

你试过prop('checked', true);而不是prop('checked', 'checked');? 这就是我在所有例子中看到的。

+0

是的,我做过。仍然是同样的问题。 – bla0009

1

我想通了。这是Magento的问题。 Magento不使用这种形式,它使用隐藏的输入并收集选定的复选框。无论如何,都会得到所有答案。由于

1

您可以使用类似:

// custom jQuery added 
jQuery(function() { 
    var to_check = false;  
    jQuery(".select-all-categories").click(function(){ 
     if (!to_check) 
      to_check = true; 
     else 
      to_check = false; 

     jQuery("#banner-categories input[type=checkbox]").each(function(){ 
      if (!to_check)  
       jQuery(this).removeAttr("checked"); 
      else 
       jQuery(this).attr("checked","checked"); 
     });   
     return false; 
    }); 
}); 

代码可以被优化

2

试试这个:

.attr('checked', 'checked'); 
相关问题