【问题标题】:jQuery - Pass element to functionjQuery - 将元素传递给函数
【发布时间】:2011-07-15 10:54:58
【问题描述】:

您好,我有一个函数,我想通过单击该元素或以该元素作为参数调用该函数来传递一个元素。这就是我所拥有的:

function change_btm_cat(item) {
        $('div.prod_matrix').removeClass('block');
        $('div.prod_matrix').addClass('none');
        $('div.prod_matrix#'+item.attr('id')).removeClass('none');
        $('div.prod_matrix#'+item.attr('id')).addClass('block');
        $('div.btm_cat').removeClass('green_grad');
        $('div.btm_cat').addClass('grey_grad');
        item.removeClass('grey_grad');
        item.addClass('green_grad');
        //ps. i know its messy, just testing stuff
    }

我可以很容易地使用它来工作:

$('div.btm_cat').click(function() {
        change_btm_cat($(this));
    });

但是当我尝试时:

$('another.element').live('click', function() {
   change_btm_cat($('div.btm_cat#7'));
});

似乎什么也没传递给函数。

查看 jsFiddle 的工作示例:http://jsfiddle.net/rb7ZG/1/

【问题讨论】:

    标签: jquery function element


    【解决方案1】:

    尝试:

    $('div.btm_cat').click(change_btm_cat);
    
    function change_btm_cat()
    {
         $(this) //becomes available
    }
    

    $('another.element').live('click', change_btm_cat);
    

    【讨论】:

    • 非常好!从未意识到 $(this) 会与这种技术相关联。光滑。
    【解决方案2】:

    你的选择器有点过火了,试试这个。

    $('another.element').live('click', function() {
       change_btm_cat($('#7'));
    });
    

    由于您拥有 ID,并且 ID 几乎是您可以拥有的最精炼的唯一信息(作为标识符),因此不需要其他细化。

    http://jsfiddle.net/rb7ZG/2/

    如果我错过了你的目标,请告诉我。

    【讨论】:

    • 啊,我明白现在发生了什么。生病只是更新我的一些身份证,希望应该在路上。干杯
    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多