2011-03-15 20 views
7

Hola Tengo una función a la que quiero pasar un elemento haciendo clic en el elemento o llamando a la función con el elemento como un parámetro. Esto es lo que tengo:jQuery - Pase el elemento a la función

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 
    } 

yo puede conseguir fácilmente que funcione utilizando la siguiente:

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

Pero cuando intento:

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

Parece que pasar nada a la función .

Ver jsFiddle por ejemplo, trabajando: http://jsfiddle.net/rb7ZG/1/

Respuesta

4

Usted va un poco por la borda con el selector, intente esto.

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

Puesto que usted tiene el ID y la identificación es más o menos la pieza más refinada de información única que puede tener (siendo el identificador) no hay necesidad de los otros refinamientos.

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

Avísame si perdía su objetivo.

+0

Ahh, entiendo que esta pasando ahora. Solo actualizaré algunas de mis identificaciones y con suerte debería estar en camino. Cheers –

14

intento:

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

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

y

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

¡Muy bien! Nunca se dio cuenta de $ (esto) estaría en contexto con esta técnica. Mancha. –

Cuestiones relacionadas