jQuery - 将元素传递给函数

时间:2011-03-15 01:11:14

标签: jquery function element

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

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/

2 个答案:

答案 0 :(得分:14)

尝试:

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

function change_btm_cat()
{
     $(this) //becomes available
}

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

答案 1 :(得分:4)

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

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

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

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

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