javascript和jquery 获取触发事件的元素

一个很简单的问题,却因为大意,经常忘了处理,导致程序运行出错.

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>

    <body>
        <ul>
            <li>
                <ul>
                    <li>listone</li>
                    <li>listtwo</li>
                    <li>listthree</li>
                </ul>
            </li>
        </ul>
        <script>
            var oUl=document.getElementsByTagName(‘ul‘)[0];
            var aLi=oUl.getElementsByTagName(‘li‘);
            var i=0;
            for(i=0;i<aLi.length;i++){
                aLi[i].onclick=function(){
                    alert(this.innerHTML);
                }
            }
        </script>
    </body>

</html>

我的本意是要在点击li的时候,弹出li的内容. 比如 "listone" ,"listtwo","listthree".

可是上述代码并不像想象中那样工作.

当我点击listtwo的li时,情况是这样的:

还没完,点击确定,又弹出一个框子:

这个框子并不是我们所期望弹出的东西.拿他为什么弹出呢?

回头看代码,这是因为listone,listtwo,listthree所在的UL的父元素,也是一个li,这个li也被加上了点击事件,弹出自己的innerHTML.

如何解决?

只要我们告诉javascript,只弹出我们点击的那个li的内容就可以了.就是触发点击事件的那个li.代码如下:

var oUl=document.getElementsByTagName(‘ul‘)[0];
var aLi=oUl.getElementsByTagName(‘li‘);
var i=0;
for(i=0;i<aLi.length;i++){
    aLi[i].onclick=function(ev){
    var e=ev||window.event;//获取事件
    var ele=e.target||e.srcElement;//获取触发事件的元素    if(this===ele)//如果这个元素就是触发事件的元素
    alert(ele.innerHTML);//弹出他的内容
    }
}

问题解决.

时间: 2024-08-15 02:40:01

javascript和jquery 获取触发事件的元素的相关文章

window.event.srcElement与window.event.target 触发事件的元素 触发事件对象的获取(非常重要)

判断事件触发的元素:     var tag = window.event.target || window.event.srcElement;    if (tag.tagName.toLowerCase() == "input") {        return;    } window.event.srcElement与window.event.target 都是指向触发事件的元素,它是什么就有什么样的属性 srcElement是事件初始化目标html元素对象引用,因为事件通过元

jQuery获取动态生成的元素

需求描述:页面上可以动态添加数据,比如table,点击按钮可以动态添加行.又或页面 加载时table数据是通过ajax从后台获取的.而这时我们想要获取其中的某个值,又该如何获取呢? 如果是要通过某个事件来获取的比如click,mouseover等等,则可以使用live()方法 $(".button").live("click",function(){ console.info($("#mytd").html()); }) live()的详细说明参

JQuery获取与设置HTML元素的值value

JQuery获取与设置HTML元素的值value 作者:简明现代魔法图书馆 发布时间:2011-07-07 10:16:13 20481 次阅读 服务器君一共花费了13.221 ms进行了6次数据库查询,努力地为您提供了提供了这个页面. val()方法 此方法类似于JavaScript中的value属性,可以用来设置和获取元索的值.无论元素是文本框,下拉列表还足单选框,它都可以返回元素的值.如果元素为多选,则返回一个包含所有选择的值的数组.先看看下面的效果演示: 欢迎访问简明现代魔法图书馆 简单

JQuery 自动触发事件

常用模拟 有时候,需要通过模拟用户操作,来达到单击的效果.例如在用户进入页面后,就触发click事件,而不需要用户去主动单击. 在JQuery中,可以使用trigger()方法完成模拟操作.例如可以使用下面的代码来触发id为btn的按钮的click事件. 1 $('#btn').trigger("click"); 这样,当页面加载完毕后,就会立刻输出想要的效果.也可以直接简写click(),来达到同样的效果: 1 $('#btn').click(); 触发自定义事件 trigger()

IE10、Chrome获取触发事件节点的源对象

记录学习JavaScript中遇到的知识点 1.IE中获取触发事件节点的源对象是通过属性srcElement,而Chrome则是以属性tagName获得.以如下函数getEventTarget(e)实现源对象的获取. 1 <script tyoe="text/JavaScript"> 2 //获取触发事件节点的源对象 3 function getEventTarget(e){ 4 e=window.event || e; 5 return e.srcElement || e

jQuery获取动态添加的元素,live和on的区别

今天给大家说一下如果用jQuery获取动态添加的元素,通常如果你在网页上利用jQuery添加一个元素,那么用平常的jQuery获取元素的方法无效的获取不到的.可以用以下的方法获取动态元素!假设我们现在需要获取网页动态添加的div元素,并绑定click事件! 在jQuery1.9版本以前,可以用live方法: $('div').live('click' function () { // }); 在jQuery1.9版本以后,live方法被删除,用on方法来代替: 如果你用这样使用on方法的话,那么

【JavaScript与JQuery获取H2的内容】

撰写日期:2016-7-13 11:05:07 JavaScript与JQuery获取DOM内容是有区别的,接下来看一例子 栗子: Jquery-获取H3中的内容然后Dom转换为Jquery <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xm

解析jquery获取父窗口的元素

("#父窗口元素ID",window.parent.document); 对应javascript版本为window.parent.document.getElementByIdx_x("父窗口元素ID"): 取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);类似的,取其它窗口的方法大同小异$(sele

jquery 获取父窗口的元素 父窗口 子窗口

$("#父窗口元素ID",window.parent.document);  对应javascript版本为window.parent.document.getElementByIdx_x("父窗口元素ID"):   取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document); 类似的,取其它窗口的方法大同小异$