Javascript 将click listener添加到JQuery对象数组

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');

以下是我的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');
        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()。