回顾树形菜单的一些思考

什么都不说,先上代码.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>exercise制作树形菜单</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<style>
    *{margin:0;padding:0;}
    body{font-size:14px;line-height:20px;}
    a{text-decoration:none;}
    a:hover {color:#f00;}
    ul,div {margin-left:50px;}
    div{margin:10px 50px 10px;}
    ul{display:none;}
    li{list-style:none;; }
    li a {font-size:12px;}
    h3{margin:20px 0;}
    img{vertical-align: middle;}
</style>
</head>

<body>
<h3><img src="images/fold.gif" />树形菜单</h3>
<div><a data-name="art"><img src="images/fclose.gif" />文学艺术</a></div>
<ul id="art">
    <li><a><img src="images/doc.gif" />先锋写作</a></li>
    <li><a><img src="images/doc.gif" />小说散文</a></li>
    <li><a><img src="images/doc.gif" />诗风此韵</a></li>
</ul>
<div><a data-name="photo"><img src="images/fclose.gif" />贴图专区</a></div>
<ul id="photo">
    <li><a><img src="images/doc.gif" />真我风采</a></li>
    <li><a><img src="images/doc.gif" />视频贴图</a></li>
    <li><a><img src="images/doc.gif" />行行摄摄</a></li>
    <li><a><img src="images/doc.gif" />Flash贴图</a></li>
</ul>
<div><a data-name="home"><img src="images/fclose.gif" />房产论坛</a></div>
<ul id="home">
    <li><a><img src="images/doc.gif" />我要买房</a></li>
    <li><a><img src="images/doc.gif" />楼市话题</a></li>
    <li><a><img src="images/doc.gif" />我要卖房</a></li>
    <li><a><img src="images/doc.gif" />租房心语</a></li>
    <li><a><img src="images/doc.gif" />二手市场</a></li>
</ul>
<div><a data-name="message"><img src="images/fclose.gif" />娱乐八卦</a></div>
<ul id="message">
    <li><a><img src="images/doc.gif" />红楼一梦</a></li>
    <li><a><img src="images/doc.gif" />笑话论坛</a></li>
    <li><a><img src="images/doc.gif" />休闲生活</a></li>
    <li><a><img src="images/doc.gif" />大话春梦</a></li>
</ul>
<script>
$(function(){
    var button = document.querySelectorAll("a[data-name]");
    $(button).each(function(){
        this.onclick = toggle;
    })
    function toggle(e){
        var idName = $(e.target).attr("data-name");
        var ctrlContent = $("#"+idName);
        if($(ctrlContent).css("display") == "block"){
            $(ctrlContent).css("display","none");
        }else{
        $(ctrlContent).css("display","block");
        }
    }
})
</script>
</body>
</html>

此代码为一个树形菜单,以前用JS源码写过,现在回顾过程中用JQ再写一遍,以下为我写此次代码过程中遇到的一些问题及思考.

1.jq中each()方法,用以下js源码依然可以实现.

var button = document.querySelectorAll("a[data-name]");for(var i = 0;i<button.length;i++)  {button[i].onclick = toggle;
}

但是each()方法相对于以上js源码不同之处在于:

①它是以没一个匹配的元素作为上下文来执行的;

js源码中的for循环中的this值为Window,而each()方法中的this指向的是相对应的DOM对象,本例中则指向的4个<a>标签.

因为this指向的是DOM对象,所有后面的点击事件也只能用原生JS方法.

如果想得到jQuery对象,则可以使用$(this)函数.对应的点击事件可改成

$(this).click(toggle);

②each()方法在每次执行函数时,都会给函数传递一个表示作为执行环境的元素在匹配的元素集合中所处位置的数字值作为参数(从零开始的整型)。 返回 ‘false‘ 将停止循环 (就像在普通的循环中使用 ‘break‘)。返回 ‘true‘ 跳至下一个循环(就像在普通的循环中使用‘continue‘);

根据返回的数字值,我们可以做许多事情,如修改图片路径:

$("img").each(function(i){
   this.src = "test" + i + ".jpg";
 });

2.target属性

①html中<a> 标签的 target 属性规定在何处打开链接文档;

@jQuery的target属性规定哪个 DOM 元素触发了该事件。

以上内容为自己写代码过程中的一些思考,错误在所难免,欢迎大家前来指正错误,交流问题.

时间: 2024-09-29 17:15:22

回顾树形菜单的一些思考的相关文章

zTree 从数据库中动态加载树形菜单

这几天做动态菜单用到了这个插件,目前用的很广泛的一个开源框架,最新发布的QUI框架就是用这个插件开发的菜单部分,因此还是很值得深入研究和学习,通过使用感觉功能很丰富,好多函数不用自己开发和编写,官网上有很详尽的API可以参考,用着算顺手但学习使用的过程中也遇到了一些困难,听过反复测试和查资料都理解了,但也在思考一个问题,怎么样才能使得最快的时间从接触一个新东西到灵活掌握的程度? 这个不仅仅是一个树形结构的菜单,每个节点左边可以有一个复选框,看了看也挺简单的,只需要在setting里面配置一个ch

利用多叉树实现Ext JS中的无限级树形菜单(一种构建多级有序树形结构JSON的方法)

一.问题研究的背景和意义 目前在Web应用程序开发领域,Ext JS框架已经逐渐被广泛使用,它是富客户端开发中出类拔萃的框架之一.在Ext的UI控件中,树形控件无疑是最为常用的控件之一,它用来实现树形结构的菜单.TreeNode用来实现静态的树形菜单,AsyncTreeNode用来实现动态的异步加载树形菜单,后者最为常用,它通过接收服务器端返回来的JSON格式的数据,动态生成树形菜单节点.动态生成树有两种思路:一种是一次性生成全部树节点,另一种是逐级加载树节点(利用AJAX,每次点击节点时查询下

Jquery Easy-UI 树形菜单的运用

一.树形菜单的右键标签 期中增加同级机构.增加下属机构.修改.删除分别是调用了addNode(),del()等方法. <div id="menuTree" class="easyui-menu" style="width: 120px;"> <SecurityTag:Authorize ID="Authorize12" runat="server" FunctionID="fun

生成树形菜单

题记------学习别人的精髓,并加以总结,消化吸收,这就是提高!!! 动态生成树形菜单,前台用easyui实现,非常简单不赘述,主要给出后台java的逻辑代码 1 package com.gongli.util.entity.treeMenu; 2 3 4 5 /* 6 * 用于封装树形菜单,无具体表与之对应,根节点为-1,节点0,然后父节点0,节点001,父节点001,节点001001,001002,001...依次类推 7 */ 8 public class TreeMenu { 9 pr

用dtree实现树形菜单 dtree使用说明

http://www.jb51.net/article/28566.htm 准备工作: 请从脚本之家http://www.jb51.net/jiaoben/31974.html下载dtree.zip文件 dtree.zip压缩包介绍: dtree是一个由JavaScript编写成的简单的树形菜单组件,目前免费并且开源. 目前有很多的树形菜单组件(比如ext),dtree是一种简单易懂的js组件, 不需要复杂的操作即可生产,同时支持动态从数据库引入数据 解压后有以下几部分: img文件夹: 包含树

JS树形菜单

超全的JS树形菜单源代码共享(有实例图) 树形菜单是很常用的效果,常用在管理软件当中,但是一套树形菜单已经不能满足需求,所以如果能有一套比较全面的树形菜单JS特效代码,将会非常方便,下面懒人萱将超全的JS树形菜单共享出来,相信你一定用得上. 一共包括八种,下面就一一介绍: 1.不同表现方式的JS树形菜单(如图所示) 2.复选框式的JS树形菜单(如图所示)左图为只可以选择单节点,右图为在选择子节点的同时选择父节点 3.可以重新排列节点并且具有拖放功能的js树形菜单(如图所示) 4.带有提示框的js

实用的树形菜单控件tree

 jQuery plugin: Treeview 这个插件能够把无序列表转换成可展开与收缩的Tree. jQuery plugin: Treeview  jQuery  jstree jsTree是一个基于jQuery的Tree控件.支持XML,JSON,Html三种数据源.提供创建,重命名,移动,删除,拖\放节点操作.可以自己自定义创建,删除,嵌套,重命名,选择节点的规则.在这些操作上可以添加多种监听事件.  jstree  jQuery UI Widgets  FileTreePanel F

使用jquery实现的多级树形菜单代码实例

使用jquery实现的多级树形菜单代码实例:树形菜单在网站中有大量的应用,这当然是因为它的独特优点,首先它可以有效的组织数据,使分类更为清晰明了,通常情况下树形菜单是可以折叠的,这样可以以更小的空间容纳更多的数据,下面就详细介绍一个使用jquery实现的属性菜单.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author&q

Unity UGUI自定义树形菜单(TreeView)

先上几张效果图:          如果你需要的也是这种效果,那你就来对地方了! 目前,我们这个树形菜单展现出来的功能如下: 1.可以动态配置数据源: 2.点击每个元素的上下文菜单按钮(也就是图中的三角形按钮),可以收缩或展开它的子元素: 3.可以单独判断某一元素的复选框是否被勾选,或者直接获取当前树形菜单中所有被勾选的元素: 4.树形菜单统一控制其下所有子元素按钮的事件分发: 5.可自动调节的滚动视野边缘,根据当前可见的子元素数量进行横向以及纵向的伸缩: 一.首先,我们先制作子元素的模板(Te