我想使用锤子js为类似的帖子构建一个双Tab手势。 Html:
<div class="gitem-wrap row">
<div class="gitem">
<div class="well">
<figure id="img-item"><img src="images/2.jpg" class="img-responsive"></figure>
<article>
...
</article>
</div>
</div>
<div class="gitem">
<div class="well">
<figure id="img-item"><img src="images/2.jpg" class="img-responsive"></figure>
<article>
...
</article>
</div>
</div>
</div>
Js初始化Hammer js:
var myElement = document.getElementById('img-item');
var mc = new Hammer(myElement);
mc.on("doubletap", function() {
//myElement.toggleClass('liked');
console.log('Double tap!');
return false;
});
它只适用于第一个元素,但不适用于所有元素
如何为具有相同ID的所有元素初始化Hammer js?
JSFIDDLE :http://jsfiddle.net/ekdfokc5/
感谢您的帮助。它在hammer.js v1的工作很棒
http://jsfiddle.net/ekdfokc5/3
但在新版本(2.0.4)中存在问题,并且{double}后$('figured').toggleClass('liked')
无效。
http://jsfiddle.net/ekdfokc5/4
答案 0 :(得分:5)
重复ID被视为无效(并非良好做法)。 ID应该是唯一的。使用其他方法,如class / TagName。
中必须是唯一的$('figure').each(function(){ //tagname based selector
var mc = new Hammer(this);
mc.on("doubletap", function() {
console.log('Double tap!');
alert('Double tap!');
//$(myElement).toggleClass('liked');
return false;
});
});
<强> Updated Fiddle 强>
提供jQuery解决方案,因为您已经标记了jQuery
或者,按类替换重复的ID,并使用基于类的选择器。
<figure class="img-item">
$('.img-item').each(function(){
var $this = $(this);
var mc = new Hammer(this);
mc.on("doubletap", function() {
console.log('Double tap!');
alert('Double tap!');
$this.toggleClass('liked');
return false;
});
});
$(this).toggleClass('..')
的小提琴不起作用,因为this
中的on()
指的是锤子对象,而不是当前对象。