jQuery - передает элемент в функцию - PullRequest
7 голосов
/ 15 марта 2011

Привет У меня есть функция, в которую я хочу передать элемент, щелкнув элемент или вызвав функцию с элементом в качестве параметра. Вот что у меня есть:

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 ]

14 голосов
/ 15 марта 2011

попробуй:

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

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

и

$('another.element').live('click', change_btm_cat);
4 голосов
/ 15 марта 2011

Вы немного перегружены селектором, попробуйте это.

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

Поскольку у вас есть идентификатор, и этот идентификатор - в значительной степени самая изысканная часть уникальной информации, которую вы можете иметь (будучи идентификатором).) нет необходимости в других уточнениях.

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

Дайте мне знать, если я пропустил вашу цель.

...