Javascript jQuery找出哪一个元素$(this)实际上是对的引用

Javascript jQuery找出哪一个元素$(this)实际上是对的引用,javascript,jquery,dom,animation,Javascript,Jquery,Dom,Animation,好的,我知道$(这个)和这个是什么意思。但我正在做的一个小项目,我试图将一些重复代码整合到可重用函数中 有了它,我就有了一个函数,我想在同一个父分区中为它下面的特定对象设置动画。这是可行的,这是确定的。然而,我有两个事件,我希望这是从目前触发 一个是加载事件,在.ready()上我运行一个$。每个()在符合此要求的元素上循环,运行良好。将相关元素传递给我使用的函数 $(this)单独作为函数的参数,函数根据此项目的规范获取该参数并对其进行处理。然而,问题来自于我想用来触发此函数的第二个事件 这是

好的,我知道
$(这个)
这个
是什么意思。但我正在做的一个小项目,我试图将一些重复代码整合到可重用函数中

有了它,我就有了一个函数,我想在同一个父分区中为它下面的特定对象设置动画。这是可行的,这是确定的。然而,我有两个事件,我希望这是从目前触发

一个是加载事件,在
.ready()
上我运行一个
$。每个()
在符合此要求的元素上循环,运行良好。将相关元素传递给我使用的函数

$(this)
单独作为函数的参数,函数根据此项目的规范获取该参数并对其进行处理。然而,问题来自于我想用来触发此函数的第二个事件

这是基于每个元素的单击事件。为此,我尝试了
。click()
。live()
。delegate()
,其中
live()
似乎是唯一能识别对象的东西。我目前在这个项目上一直使用jQuery1.4.4。因此,
.on()
对我不可用,或者我也想试试。我也很困惑为什么
delegate()
click()
不起作用,尽管使用DOM呈现元素,但只有
live()
会起作用,但这与我目前正在寻找的完全不同

底线是,在这个示例中,我通过前面提到的循环调用函数的方式是可行的:

$('.panels h3').each(function()
{
    accordionUpDown($(this), false);
});
这个基于点击的例子不起作用,但人们会认为它应该起作用,但它不起作用

$('.panels h3').live('click',function()
{
    accordionUpDown($(this), true);
});
此处还有函数本身供参考:

function accordionUpDown(theElem, fx)
{
    //alert('test'+theElem);
    if(theElem.hasClass('active'))
    {
        var $elem = theElem.next('div');
        var elemY = ($elem.children('div').innerHeight()+2);

        if(fx == false)
        {
            $elem.addClass('active').css({height:elemY+'px'});
        }
        else
        {
            $elem.addClass('active').animate({height:elemY+'px'}, 2000);
        }
    }
    if(!theElem.hasClass('active'))
    {
        var $elem = theElem.next('div');
        var elemY = '0px';
        if(fx == false)
        {
            $elem.css({height:elemY}).removeClass('active');
        }
        else
        {
            $elem.animate({height:elemY}, 2000).removeClass('active');
        }
    }
}
现在,为了节省你们的时间,我要问为什么我不使用类似jqueryui的东西来达到同样的效果,那么简单地说,这是一个样式问题,以及一些其他的功能,一旦这些功能正确到位,就计划好了。在这两种情况下,定制需求都超越了简单的概念

无论如何,在点击的情况下,我开始怀疑
$(此)
是否以某种方式拾取了错误的东西,如果是,那么可能它没有按照预期的原因工作,因此如果是这样,我试图找出如何找到
$(此)
实际是哪个元素

快速编辑,对于那些想看到所有内容的人,我制作了一个小提琴版本。
也包括HTML部分

您不能打印出id或其他可识别属性吗

$(this).attr('id')

我似乎误解了最初的方法。根据对您遇到的问题的描述(.live-works,但是.click-not),我不得不建议您在DOM实际就绪之前(在.ready()调用中)执行代码

所有这三种事件附件场景都可以在上下文之外正常工作。


我目前没有使用ID,但这是找到我需要的一个可行的解决方案,我可以将ID添加到我尝试引用的每个H3中,看看它是否会吐出任何东西,感谢开发者控制台上的IDEA,您也可以输入以下内容,它应该吐出一个匹配元素数组$(“.panels H3”)放置
调试器
语句位于
手风琴向上向下的开头
。单击H3元素。如果开发工具处于打开状态,则应暂停代码执行。现在,您可以检查作为第一个参数传递的值。如果
.live()
有效,那么您可能是在DOM准备就绪之前分配了处理程序。嗯,我不太喜欢使用live。但是你是说我应该把我所有的
live()
调用都放在
ready()
中吗?你是说
.live()
版本才有效,对吗?“你的问题很难理解。”我承认,我再一次重复我的问题,它有点失控,从我最初想问的问题到现在的问题。总的来说,我想知道如何在
$(此)
的情况下找出
[对象对象]
是什么,这样我就可以知道该对象是否是我假设的正确对象,然后,问题是如何从这一点发展到我目前实际正在做的事情,这基本上就是我想知道的原因。OP正在使用
live()
附加单击处理程序。误解了OP的方法。根据@Šime Vidas注释修复。
$(document).ready(function(){
    $('.someClass h3').click(function(){
        alert('fired click event that was bound to multiple items at once using .click()');
    });

    $('.someClass h3').each(function(){
        $(this).click(function(){
          alert('fired click event that was bound to one item at a time using .each and .click()');
        });
    });

    $('.someClass h3').live("click", function(){
        alert('fired click event that was bound to multiple items at once using .live("click", func)');
    });
});