`
dahui
  • 浏览: 50150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

有关 javascript处理事件的一个问题。

阅读更多
有如下的HTML结构。现在需要用这个结构实现一个二级的树形菜单。 class="open"意味着打开,class="close"意味着关闭。
最开始用YUI 的event listener功能,我给 id="user-groups"的li设置一个click 的 callback funcation 比如 toggleFolder().
但是,当我点击包含在其中的子元素时,比如<li><a href="myGroup.jsp">My Groups</a></li>,仍旧回调了toggleFolder()。实际上此时我期望的操作是直接执行链接动作。
导致问题的根本原因是,我不能更细致的处理click事件。我试图找出click事件发生后在各个elements中传递的路径,但是对DOM和javascript太不熟悉了,没有搞定。
浏览器中事件传播模型有两个:1)事件捕获模型    2)事件冒泡  分别由微软、Netscape提出。 
DOM规定的标准事件模型是以上两种方式都支持。
<ul>
     <li id="user-groups" class="close">
         <a href="group.jsp"><span>Groups</span></a>
          <ul>
              <li><a href="myGroup.jsp">My Groups</a></li>
              <li><a href"listGroup">Groups List</a></li>
              <li><a href="createGroup" >Create a Group</a></li>               
          </ul>
      </li>
 
     
     <li id="user-tasks" class="open">
         <a href="task.jsp"><span>Tasks</span></a>
          <ul>
              <li><a href="myTask.jsp">My Task</a></li>
              <li><a href"listTask">Task List</a></li>
              <li><a href="createTask" >Create a Task</a></li>               
          </ul>
      </li>
      ... ...
      ... ...
<ul>
 
 
看了aTang推荐的jQuery,尝试了几次。终于通过以下语句实现了我需要的效果。即,只对"定义在<li>中的包含<span>的<a>"设置callback函数。
 $("li > a:has(span)").click(function() {
   ... ...
 });
 
 
jQuery提供了很好xPath方式的元素定位机制,而且有了一些很常用的UI组件。比起重量级的YUI很有诱惑力。
以前用过Rico的DataGrid也很不错。
 
*****************
1) How to find the parent node by jQuery.
    var pid = $("#myElement").parent().attr("id");
  如果是在事件的callback函数中,还可以这样: var node = $(this).parent();
 
2) 写非常非常简单的plugin,参见:   http://docs.jquery.com/Plugins/Authoring
  这个是关于firefox中fireBug的consle API:  http://getfirebug.com/console.html
 
  今天菜单可以折叠了,代码:
<script type="text/javascript" >
    $(document).ready(function() {
         $("li > a:has(span)").click(function() {
               var node = $(this).parent().toggleClass("open", "close");  
               $.log("aaaclick user Groups ID=" + node.attr("id")); 
               return false;
         });
   });
</script>
 
 
jQuery.fn.toggleClass = function(classA, classB) {
  if (this.hasClass(classA)) {
  this.removeClass(classA);
  this.addClass(classB);
  }else {
  this.removeClass(classB);
  this.addClass(classA); 
  }
     return this;
};
 
 
 
分享到:
评论

相关推荐

    JavaScript 事件处理 事件绑定 示例代码

    事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例...

    JavaScript 事件处理 常用事件(鼠标事件、键盘事件、表单事件)示例代码

    JavaScript 事件处理 常用事件(鼠标事件、键盘事件、表单事件)示例代码JavaScript 事件处理 常用事件(鼠标事件、键盘事件、表单事件)示例代码JavaScript 事件处理 常用事件(鼠标事件、键盘事件、表单事件)示例...

    JavaScript程序设计——事件处理实验报告.docx

    - **Event对象**:事件处理函数中通常会传递一个Event对象,包含了关于事件的信息,如事件类型、位置等。 - **键盘事件**:如`onkeydown`(键按下)、`onkeyup`(键释放)和`onkeypress`(字符键按下)。 - **...

    JavaScript 事件处理 二级菜单级联 示例代码

    JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 ...

    Javascript_事件处理

    Javascript_事件处理,讲解了JAVASCRIPT事件开发中注意的事项,步骤,有条理的讲解

    第6章 JavaScript中的事件与事件处理

    第6章 JavaScript中的事件与事件处理

    JavaScript 事件处理 下拉列表和可选项 示例代码

    JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 ...

    JavaScript程序设计课件:第 5 章 事件和事件处理.ppt

    ')"&gt;,其中 pm 是一个外部的 JavaScript 函数。 处理事件 处理事件是指对事件的响应和处理。例如,在鼠标单击按钮时弹出警示框,或者在窗口加载时执行某些操作。 JavaScript 中的事件处理 JavaScript 提供了多种...

    JavaScript 的事件处理

    JavaScript 的事件处理

    JavaScript 趣味案例-事件处理-dom操作表格 示例代码

    JavaScript 事件处理 示例代码 包含表格表单创建、样式设置、事件绑定(表格、表单、复选框)、事件处理 JavaScript 事件处理 示例代码 包含表格表单创建、样式设置、事件绑定(表格、表单、复选框)、事件处理...

    javascript事件详解

    在非IE浏览器中,事件对象作为事件处理函数的第一个参数传递,而在IE中,事件对象是全局的window.event。事件对象的常见属性和方法包括: - type:事件的名称,如"click"。 - target/srcElement:触发事件的元素。...

    第3章+JavaScript事件处理.pdf

    用户可以通过自定义事件处理器来改变默认的行为,例如,一个链接点击事件默认会跳转到链接指向的页面,但是通过JavaScript,可以轻松地编写自定义事件处理器,以替代这一默认行为。以下是一个简单的示例: ```html ...

    探究JavaScript中的五种事件处理程序方式

    这种方法更强大,可以处理同一个事件的多个监听器,且控制事件处理顺序。 4. IE事件处理程序 Internet Explorer浏览器使用`attachEvent`和`detachEvent`方法,与DOM2级事件处理程序类似,但不支持捕获阶段。 ```...

    javascript表单事件处理方法详解.docx

    javascript 表单事件处理方法详解 javascript 表单事件处理方法是指在表单中使用 javascript 语言来处理用户的输入信息,并对其进行验证和处理的方法。这些方法可以帮助开发者更好地控制表单的行为,提高用户体验和...

    自己用Javascript和Html写的一个简单计算器

    在本项目中,我们探索的是如何使用HTML、CSS和JavaScript技术构建一个基本的计算器应用。这个简单的计算器由一个初级...同时,这也是一个很好的练习,可以帮助开发者理解DOM操作、事件处理以及基本的数学计算逻辑。

    使用webview加载本地html页面,并处理html页面中的javascript事件

    在Java代码中,我们需要创建一个自定义的WebViewClient,并处理这个JavaScript函数调用: ```java webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView ...

    实验项目二十二  javascript事件处理.doc

    JavaScript 事件处理是 JavaScript 编程语言中的一种机制,用于响应用户的交互行为,如鼠标单击、键盘输入、浏览器加载等。通过事件处理,开发者可以创建更加交互、动态的 Web 应用程序。 在本实验项目中,我们将...

    javascript之事件及事件响应篇

    例如,对于一个按钮点击事件,可以在HTML中直接写入`onclick="myFunction()"`,或者在JavaScript中通过`element.onclick = myFunction;`进行设置。这种方法简单直观,但当有多个事件需要处理时,代码会变得混乱,且...

    javaScript对象模型与事件处理借鉴.pdf

    文档对象模型是由 W3C 委员会所定义的标准文档对象模型,该模型是一个能够让程序或者脚本动态地访问和更新文档内容、结构和样式的应用程序接口。 在 JavaScript 中,对象与对象之间不是独立存在的,对象与对象之间...

Global site tag (gtag.js) - Google Analytics