有如下的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提出。
】
<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();
今天菜单可以折叠了,代码:
<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 事件处理 常用事件(鼠标事件、键盘事件、表单事件)示例...
- **Event对象**:事件处理函数中通常会传递一个Event对象,包含了关于事件的信息,如事件类型、位置等。 - **键盘事件**:如`onkeydown`(键按下)、`onkeyup`(键释放)和`onkeypress`(字符键按下)。 - **...
JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 示例代码JavaScript 事件处理 二级菜单级联 ...
Javascript_事件处理,讲解了JAVASCRIPT事件开发中注意的事项,步骤,有条理的讲解
第6章 JavaScript中的事件与事件处理
JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 下拉列表和可选项 示例代码JavaScript 事件处理 ...
')">,其中 pm 是一个外部的 JavaScript 函数。 处理事件 处理事件是指对事件的响应和处理。例如,在鼠标单击按钮时弹出警示框,或者在窗口加载时执行某些操作。 JavaScript 中的事件处理 JavaScript 提供了多种...
JavaScript 的事件处理
JavaScript 事件处理 示例代码 包含表格表单创建、样式设置、事件绑定(表格、表单、复选框)、事件处理 JavaScript 事件处理 示例代码 包含表格表单创建、样式设置、事件绑定(表格、表单、复选框)、事件处理...
在非IE浏览器中,事件对象作为事件处理函数的第一个参数传递,而在IE中,事件对象是全局的window.event。事件对象的常见属性和方法包括: - type:事件的名称,如"click"。 - target/srcElement:触发事件的元素。...
用户可以通过自定义事件处理器来改变默认的行为,例如,一个链接点击事件默认会跳转到链接指向的页面,但是通过JavaScript,可以轻松地编写自定义事件处理器,以替代这一默认行为。以下是一个简单的示例: ```html ...
这种方法更强大,可以处理同一个事件的多个监听器,且控制事件处理顺序。 4. IE事件处理程序 Internet Explorer浏览器使用`attachEvent`和`detachEvent`方法,与DOM2级事件处理程序类似,但不支持捕获阶段。 ```...
javascript 表单事件处理方法详解 javascript 表单事件处理方法是指在表单中使用 javascript 语言来处理用户的输入信息,并对其进行验证和处理的方法。这些方法可以帮助开发者更好地控制表单的行为,提高用户体验和...
在本项目中,我们探索的是如何使用HTML、CSS和JavaScript技术构建一个基本的计算器应用。这个简单的计算器由一个初级...同时,这也是一个很好的练习,可以帮助开发者理解DOM操作、事件处理以及基本的数学计算逻辑。
在Java代码中,我们需要创建一个自定义的WebViewClient,并处理这个JavaScript函数调用: ```java webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView ...
JavaScript 事件处理是 JavaScript 编程语言中的一种机制,用于响应用户的交互行为,如鼠标单击、键盘输入、浏览器加载等。通过事件处理,开发者可以创建更加交互、动态的 Web 应用程序。 在本实验项目中,我们将...
例如,对于一个按钮点击事件,可以在HTML中直接写入`onclick="myFunction()"`,或者在JavaScript中通过`element.onclick = myFunction;`进行设置。这种方法简单直观,但当有多个事件需要处理时,代码会变得混乱,且...
文档对象模型是由 W3C 委员会所定义的标准文档对象模型,该模型是一个能够让程序或者脚本动态地访问和更新文档内容、结构和样式的应用程序接口。 在 JavaScript 中,对象与对象之间不是独立存在的,对象与对象之间...