嗨我有一个函数,我希望通过单击元素或使用元素作为参数调用函数来传递元素。这就是我所拥有的:
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/
答案 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几乎是您可以获得的最精致的唯一信息(作为标识符),因此不需要进行其他改进。
如果我错过了你的目标,请告诉我。