каждая функция jquery. это правильно? - PullRequest
0 голосов
/ 05 июля 2010
 $('.dragbox').each(function(){
        $('.close').click(function(){
            $(this).parent().hide();
        }),
        $('.colpase').click(function(){
            $(this).siblings('.dragbox_content').toggle();
        })
     });    

Ответы [ 5 ]

3 голосов
/ 05 июля 2010

Учитывая, что jquery работает как упакованный набор (коллекция), я не думаю, что вам нужен каждый метод, просто

$('.dragbox').find('.close').click(function(){
    $(this).parent().hide();
})
$('.dragbox').find('.colpase').click(function(){
    $(this).siblings('.dragbox_content').toggle();
})

обработчики будут применены ко всем согласованным элементам без необходимости каждого из них.

это найдет все .close и .colpase внутри элемента (ов) .dragbox, который, как я предполагал, это то, что вам нужно ...

отредактировано для использования find , чтобы получить небольшое улучшение производительности. Спасибо Дэн / Алекс.

1 голос
/ 05 июля 2010

Не похоже, что вам нужна функция each (). Возможно, вы применяете обработчики событий к объектам несколько раз. Просто:

    $('.close').click(function(){
        $(this).parent().hide();
    });
    $('.colpase').click(function(){
        $(this).siblings('.dragbox_content').toggle();
    });

Должен сделать свое дело.

1 голос
/ 05 июля 2010

Нет. Предположительно, вы хотите применить обработчики щелчков к соответствующим элементам в каждом dragbox. Вы можете сделать это с помощью:

 $('.dragbox').each(function(){
        $('.close', this).click(function(){
            $(this).parent().hide();
        }),
        $('.colpase', this).click(function(){
            $(this).siblings('.dragbox_content').toggle();
        })
     });    

Если бы вы просто хотели добавить обработчики глобально, вы бы не хотели каждый из них.

0 голосов
/ 06 июля 2010

если вы имеете в виду «родитель» к фактическому «. Dragbox» в «каждом»

$('.dragbox').each(function(){

  var self = this;

  $(self).find('.close').bind("click", function(){

    $(self).hide();

  }); // <-- ","?

  $(self).find('.colpase').bind("click", function(){

    //This line confuses me because you could do the same in the selector for the click event
    //unless you do have more things in the function
    $(this).siblings('.dragbox_content').toggle();

  });

  /*
  $(self).find('.colpase').siblings('.dragbox_content').bind("click", function(){
    $(this).toggle();
  });
  */

}); 
0 голосов
/ 05 июля 2010
function set_colors(pick_color)
{
    var color_code=pick_color;
    $('#'+ color_owner).parent().css('background-color',color_code);
}
...