jQuery - 将元素传递给函数

Cha*_*her 7 jquery element function

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

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
    }
Run Code Online (Sandbox Code Playgroud)

我可以轻松地使用它来工作:

$('div.btm_cat').click(function() {
        change_btm_cat($(this));
    });
Run Code Online (Sandbox Code Playgroud)

但当我尝试:

$('another.element').live('click', function() {
   change_btm_cat($('div.btm_cat#7'));
});
Run Code Online (Sandbox Code Playgroud)

它似乎没有通过任何功能.

有关工作示例,请参阅jsFiddle:http: //jsfiddle.net/rb7ZG/1/

Rob*_*Rob 14

尝试:

$('div.btm_cat').click(change_btm_cat);

function change_btm_cat()
{
     $(this) //becomes available
}
Run Code Online (Sandbox Code Playgroud)

$('another.element').live('click', change_btm_cat);
Run Code Online (Sandbox Code Playgroud)


Qui*_*son 4

你对选择器的使用有点过分了,试试这个。

$('another.element').live('click', function() {
   change_btm_cat($('#7'));
});
Run Code Online (Sandbox Code Playgroud)

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

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

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