leo*_*ora 27 html jquery click css-selectors
这是我的HTML
<li><div class="myLink" id=1>A<div>
<li><div class="myLink" id=2>b<div>
<li><div class="myLink" id=3>c<div>
<li><div class="myLink" id=4>d<div>
<li><div class="myLink" id=5>d<div>
<li><div class="myLink" id=6>e<div>
<li><div class="myLink" id=7>d<div>
<li><div class="myLink" id=8>g<div>
Run Code Online (Sandbox Code Playgroud)
我用这段代码创建了一个jquery事件绑定:
jQuery(".myLink").click(function(event) {
var myId = this.id;
location.href = '/x/y?myId=' + myID;
});
Run Code Online (Sandbox Code Playgroud)
当我点击其中一个链接(li项目).我认为这会触发一次点击事件,当我调用this.id时,我会得到我点击的项目的id.
但它看起来像:
jQuery(".myLink").click(function(event) {
Run Code Online (Sandbox Code Playgroud)
即使我只是点击一个链接就一遍又一遍地开火.我在他们的firebug中放了一个调试器声明,看到这个被一遍又一遍地调用.
有什么想法吗?
use*_*568 69
我遇到了类似的问题,我的解决方案是在声明click事件之前取消绑定click事件.没有多大意义,但我不知道多个事件是如何附加到单个HTML元素的.(我的HTML看起来有效;))
$('.remove_lkc').unbind('click').click(function(){..........
Eri*_*rik 18
如果您关闭<li>代码,则可以解决问题.我刚刚对它进行了测试,并对其进行了修正.应该
<li> ... </li>
<li> ... </li>
Run Code Online (Sandbox Code Playgroud)
不
<li>
<li>
Run Code Online (Sandbox Code Playgroud)
Pra*_*oya 14
在我的例子中,我有多个标签呈现相同的部分,每个部分都有$(document).ready()调用,它将click事件绑定三次.
添加这两行解决了它:
event.stopPropagation();
event.preventDefault();
Run Code Online (Sandbox Code Playgroud)
来源:http: //code.google.com/intl/en/mobile/articles/fast_buttons.html
尝试将id属性的值放在引号中.你刚才放的时候会发生奇怪的事情id=1.
另外,你怎么知道它多次开火?将此行放在函数的顶部并观察firebug日志以查看发生的情况:
console.log( "clicked on", jQuery(this), "which has id", jQuery(this).attr('id') );
Run Code Online (Sandbox Code Playgroud)
编辑:
嘿,正如其他人所指出的那样......确保你的标记也是有效的:P
我的问题是,当我创建<div>s 时,我在循环中进行了事件绑定,因此为事件中的每个项目反复添加事件.这只是需要仔细检查的东西.