javascript多个标签共用同一个处理函数问题?

基本条件如下:有多个标签,每个标签在网页上标示一条线,所有的标签的class相同,Id按顺序递加期望结果:1.当我鼠标滑过任意一条线时,触发一个事件,这个事件提取对应的这... 基本条件如下:
有多个标签,每个标签在网页上标示一条线,所有的标签的class相同,Id按顺序递加
期望结果:
1.当我鼠标滑过任意一条线时,触发一个事件,这个事件提取对应的这条线的属性信息用ajax从服务器请求数据,将返回的结果显示出来
已解决的问题:
1.

现在已经解决了单一的一条线触发事件取得结果并显示,如图,将for循环注释,将其中的i变量改为0,1,或2就能实现触发单一的一条线
请高手指点下,谢谢
展开
 我来答
百度网友45ec25c
推荐于2017-11-04 · 超过30用户采纳过TA的回答
知道答主
回答量:126
采纳率:80%
帮助的人:27.7万
展开全部

同学 你太小瞧jQuery的威力了,在提供解决方案前,先简单说一下,循环mouseover、ajax的问题,

因为mouseover是事件,内部代码不是在ready的时候执行,所以和ajax一样,等同于是是异步执行的,加上js的变量作用域,你的代码会出现这样的问题:你在mouseover 或者 ajax的success中访问外层的变量i,发现i永远是最大值,效果就是不管你触摸哪条线,都只有最后一条线有反映。

正确的jQuey用法如下

//代码就没有全写了,使用this,可以免掉for循环
//给所有满足条件的元素绑事件
$('.path_n').mouseover(function(){
    var $th=$(this);//用this来区分当前是在哪个元素上移动,这里的this为鼠标当前移入的元素对象
    //后续取attribute可以通过jQuery的attr方法来取
    var real_data=$th.attr('real_data');
    var abnormal_data=$th.attr('abnormal_data');
    //.....
    $.ajax({
        //...
    });
});
zhaoapk
2013-07-24 · TA获得超过3771个赞
知道大有可为答主
回答量:1343
采纳率:40%
帮助的人:1617万
展开全部
var tag = $('path.path_n'); 这里没有抓取到标签吧。
alert(tag.length)看看有没有
更多追问追答
追问
抓到了,现在是3个,我用debug调试过
追答
把 $("path.path_n")[i]替换为this。

this就是当前mouseover的标签
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
薇didi8280
2017-11-03 · 超过48用户采纳过TA的回答
知道答主
回答量:117
采纳率:61%
帮助的人:47.2万
展开全部
var tag = $('path.path_n'); 这里没有抓取到标签吧。 alert(tag.length)看看有没有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式