Javascript 将click listener添加到JQuery对象数组
以下是我的javascript:Javascript 将click listener添加到JQuery对象数组,javascript,jquery,Javascript,Jquery,以下是我的javascript: function scrollTo(position) { $('body').animate({ scrollTop: position }, 500); } var titles = $('.title'); for(var i = 0; i < titles.length; i++) { titles[i].click(function() { console.log('click');
function scrollTo(position) {
$('body').animate({
scrollTop: position
}, 500);
}
var titles = $('.title');
for(var i = 0; i < titles.length; i++) {
titles[i].click(function() {
console.log('click');
scrollTo(0);
});
}
功能滚动至(位置){
$('body')。设置动画({
滚动顶部:位置
}, 500);
}
变量标题=$('.title');
对于(变量i=0;i
它应该选择所有三个标题,并应用一个单击侦听器,将页面滚动回顶部。不幸的是,我在控制台中没有收到消息,也没有滚动
我在网上看到的每一个地方都给出了这样的循环,以将单击侦听器应用于多个JQuery对象,但由于某些原因,它对我不起作用。恐怕我可能犯了一个愚蠢的错误,但我找不到它。您的代码不起作用的原因是因为这一行
titles[i].click(function() {
当您使用索引访问jQuery
对象时,从技术上讲,您访问的是DOM
元素,而不是jQuery
对象。而且DOM
对象没有click
方法。如果您打开控制台,就会看到一个错误。如果仍要使用for循环,则必须首先将其转换为jQuery
对象
$(titles[i]).click(function() {
如果你能做到这一点,它会像预期的那样工作
另外,如果您仍然不想对其进行双重包装,那么也可以使用.eq
从数组中获取jQuery
对象
titles.eq(i).click(function() {
您不需要迭代jQuery对象来分配事件处理程序。你可以在一行中完成
$('.title').click(function() {
console.log('click');
scrollTo(0);
});
还要检查您正在使用的jQuery版本,如果它是最新的,那么您可以在
$('.title').on('click', function() {
此外,您还需要确保在关联事件时,页面上存在class
title
的元素。代码无法工作的原因是因为这一行
titles[i].click(function() {
当您使用索引访问jQuery
对象时,从技术上讲,您访问的是DOM
元素,而不是jQuery
对象。而且DOM
对象没有click
方法。如果您打开控制台,就会看到一个错误。如果仍要使用for循环,则必须首先将其转换为jQuery
对象
$(titles[i]).click(function() {
如果你能做到这一点,它会像预期的那样工作
另外,如果您仍然不想对其进行双重包装,那么也可以使用.eq
从数组中获取jQuery
对象
titles.eq(i).click(function() {
您不需要迭代jQuery对象来分配事件处理程序。你可以在一行中完成
$('.title').click(function() {
console.log('click');
scrollTo(0);
});
还要检查您正在使用的jQuery版本,如果它是最新的,那么您可以在
$('.title').on('click', function() {
此外,当您关联事件时,您需要确保页面上存在带有class
title
的元素。您可以使用它,它将提供您所需的内容
$('.title').click(function () {
$('body,html').animate({
scrollTop: 0
}, 600);
return false;
});
同样正如Sushanth所说,如果你有一个新版本的jQuery,你可以使用它。在(点击)上,你可以使用它,它会给你你想要的东西
$('.title').click(function () {
$('body,html').animate({
scrollTop: 0
}, 600);
return false;
});
同样正如Sushanth所说,如果你有一个新版本的jQuery,你可以使用代码>以使其工作。或者
titles.eq(i)。单击(…)
titles[i]
返回所需的DOM对象$(titles[i])。单击(…)代码>以使其工作。或者titles.eq(i)。单击(…)
titles[i]
返回一个DOM对象。谢谢!为什么我这样做不起作用?我以前在单个JQuery对象上使用过.click()。这很有效,谢谢!为什么我这样做不起作用?我以前在单个JQuery对象上使用过.click()。