отправка параметров в функцию jquery - PullRequest
1 голос
/ 11 марта 2010

У меня есть следующая функция, которая очень хорошо работает в $(document).ready(function(){

$('.threadWrapper > .littleme').click(function() {
        $(this).next().toggle();
        $(this).toggle();
        $('.littleme').not(this).next().hide();
        $('.littleme').not(this).show();

        // re-run masonry
        $('#mainContent').masonry();

        return false;
    }).next().hide();

Что я хочу сделать, это вызвать это из встроенного javascript. Каждый элемент div, который содержит класс threadWrapper, также имеет свой собственный идентификатор. Что я хочу сделать, так это уметь запускать эту функцию, используя встроенные вызовы JavaScript и отправляя идентификатор в качестве параметра. Например:

$(function(id){
$('#id > .littleme').next().toggle();
$('#id > .littleme').toggle();
etc. etc.
});

Ответы [ 3 ]

2 голосов
/ 11 марта 2010

Просто объедините строки для селектора следующим образом:

function toggleStuff(id) {
  $('#' + id + ' > .littleme').next().toggle();
  $('#' + id + ' > .littleme').toggle();
  //etc. etc.
}

Определите это за пределами вашей функции document.ready, чтобы она была доступна. Кроме того, вы можете сократить это, если хотите, до:

  $('#' + id + ' > .littleme').toggle().next().toggle();
1 голос
/ 11 марта 2010

Вы можете просто использовать обычную функцию JavaScript:

function Something(id) // id is a jquery object
{
  id.find('.littleme').next().toggle();
  id.find('.littleme').toggle();
  etc. etc.
}
0 голосов
/ 11 марта 2010

Нет необходимости вызывать какой-либо встроенный JavaScript из ваших элементов. Я бы порекомендовал следующее:

$('.threadWrapper').click(function() {
    $(this).find(".littleme").next().toggle();
    $(this).find(".littleme").toggle();
    etc. etc.
});

Глядя на ваши селекторы, .littleme является прямым потомком .threadWrapper. Поэтому, если вы связываете событие щелчка со всеми .threadWrapper с, вы можете выбрать .littleme с поиском в текущем контексте.

Кроме того, если вам интересно, эти два утверждения можно консолидировать с помощью .end:

$(this).find(".littleme").next().toggle().end().toggle();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...