我正在尝试制作一个包含大约5-6张图像的图像预览,当用户将鼠标悬停在它上面时,这些图像会一个接一个地出现(不像带有prev和下一个按钮的旋转木马)。这是fiddle由我到目前为止所收集的内容组成的...我不知道这种方法是否正确..但是由于警报回调不起作用,我被卡住了。有人可以告诉我有什么问题吗?
$(function()
{
var imageCount = $('#product_grid_list').find('figure')[0].getElementsByTagName('img');
for (var i = 0, n = imageCount.length; i < n; i++) {
imageCount[i].on('click', function(e)
{
alert('Everything is going fine!');
}
);
}
}
);
答案 0 :(得分:1)
您正试图在on()
(DOM元素)上调用HTMLElement
jQuery方法。你不能这样做,jQuery方法只能在jQuery集合上调用。您可以轻松获得所需元素的jQuery集合:
.find()
匹配图片for()
循环,jQuery&#39; .on()
将为您处理循环。
$(function () {
var imageCount = $('#product_grid_list').find('figure img');
imageCount.on('click', function (e) {
e.preventDefault()
alert('Everything is going fine!');
})
});
答案 1 :(得分:1)
您正在同时使用js和jQuery。这是不对的。如果你使用jQuery,那么click
事件将是这样的:
$(document).('click', '#product_grid_list figure img', function(){
alert('Everything is going fine!');
});
答案 2 :(得分:1)
您正在使用jQuery和独立的javascript混合。您可能会一直使用jQuery,例如:
$('#product_grid_list figure:first img').click(function(e) {
alert('Everything is going fine, hopefully!');
});
您没有发送相应的HTML,因此我们无法测试上述内容是否正确。
答案 3 :(得分:1)
它只是jQuery中的一个简单点击事件,不需要使用js:http://jsfiddle.net/wP3QQ/11/
$('#product_grid_list').find('figure img').click(function(e){
alert('Everything is going fine!');
e.preventDefault();
});
答案 4 :(得分:1)
您想要悬停效果,因此不应在此处使用click事件。它应该是鼠标悬停。
代码段:
$(document).on('mouseover','#product_grid_list figure img',function(e){
alert("now it is working");
});
答案 5 :(得分:1)
无法触发点击事件回调的根本原因是您尝试在&#34; DOM&#34;上注册事件处理程序。 (在这种情况下: imageCount [i] )jQuery方式的元素。如果你想使用纯JavaScript解决方案,请尝试注册这样的事件处理程序:
imageCount[i].addEventListener('click', function(e){
alert('Everything is going fine!');
});
注意:在这种情况下,我没有考虑跨浏览器问题。
BTW,尝试缓存imageCount节点列表的长度,它将提高性能。