随笔-348  评论-598  文章-0  trackbacks-0
jQuery.noConflict();//与JSF搭配需要这句话,不然会有冲突
        jQuery(document).ready(function() {
        
// Add click event listener to each checkbox in the tree page
        // Note! Using this simple selector assumes that there are no other 
        // checkboxes on the page, if there are other checkboxes then
        // selector should be changed    
            jQuery(":checkbox").click(function(){
                updateChildren(
this);
                updateParent(
this);
             }
);
        }
);
        
</script>
        
<script type="text/javascript">
        
function updateChildren(currentCheckBox)
        
{
            
// Get state of current checkbox (true or false)
            var state = currentCheckBox.checked;
            
            
// Get parent TABLE, where current checkbox is places
            var parentTables = jQuery(currentCheckBox).parents("table"); 
            
var parentTable = parentTables[0];    
        
            
// Get DIV where child nodes with checkboxes are situated
            // See http://docs.jquery.com/Traversing/ to get better uderstanding of
            // parents() and next()        
            var childDivs = jQuery(parentTable).next("div");    
            
if(    childDivs.length > 0 )
            
{
                
var childDiv = childDivs[0];        
            
                
// Iterate over all child nodes checkboxes and set same state as the 
                // current checkbox state
                jQuery(childDiv).contents().find(":checkbox").each(function() {
                    
this.checked = state;
                }
);
            }


        }

        
        
//更新父节点的方法,如果子节点全部选中则父节点选中,如果子节点中有一个未选中,则父节点也未选中
        function updateParent(currentCheckbox) {
            
var parentDivs = jQuery(currentCheckbox).parents("div");
            
var parentDiv = parentDivs[0];    

            
var hasSelected = false;
            
            jQuery(parentDiv).contents().find(
":checkbox").each(function() {
                
if(this.checked) {
                    hasSelected 
= true;
                }else{
                        hasSelected = false;
                        return;
                    }
            }
);
            
            
var parentTables = jQuery(parentDiv).prev("table");
            
if(parentTables.length > 0)
            
{
                
var parentTable = parentTables[0];
            
                
var parentCheckboxes = jQuery(parentTable).find(":checkbox");
                
var parentCheckbox = parentCheckboxes[0];
                
                parentCheckbox.checked 
= hasSelected ;
            }


        }
注意引入jQuery包。
此js代码加到页面中,将会给页面中的树形菜单的Checkbox默认加上一些功能:当选择父节点时全选子节点;当子节点全选时,父节点也会被自动选择上。同时不会影响其他Checkbox。

---------------------------------------------------------
专注移动开发

Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2009-11-12 08:46 TiGERTiAN 阅读(3420) 评论(4)  编辑  收藏 所属分类: VB/ASPJSF

评论:
# re: 用jQuery给页面中树形的Checkbox默认加上父子节点相关操作 2009-11-12 14:30 | 凡客诚品优惠券
不错,收藏  回复  更多评论
  
# re: 用jQuery给页面中树形的Checkbox默认加上父子节点相关操作 2009-11-12 18:49 | BeanSoft
收藏了!  回复  更多评论
  
# re: 用jQuery给页面中树形的Checkbox默认加上父子节点相关操作 2009-11-12 19:25 | jackyrong
能否提供完整代码下载呢  回复  更多评论
  
# re: 用jQuery给页面中树形的Checkbox默认加上父子节点相关操作 2009-11-12 19:45 | TiGERTiAN
@jackyrong
这个就是完整的代码啊  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: