2011-03-15 69 views
7

嗨我有一個函數,我想通過單擊元素或調用該元素作爲參數調用該函數傳遞一個元素。這是我有:jQuery - 傳遞元素到函數

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/

回答

4

你有選去過分了一點,試試這個。

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

既然你的ID和ID幾乎是最精緻的一張獨特的信息,您可以擁有(即標識符)沒有需要的其他改進。

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

讓我知道如果我錯過了你的目標。

+0

啊,我明白了什麼,現在事情。我只是更新一些我的身份證,希望應該在路上。乾杯 – 2011-03-15 01:21:49

14

嘗試:

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

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

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

非常好!從來沒有意識到$(this)會與這種技術有關。油滑。 – 2012-11-08 04:32:25