Объединение $ ('body'). On ('click') с $ (window) .resize (function () в jQuery

javascript jquery

646 просмотра

4 ответа

1392 Репутация автора

Хотите знать, если есть способ объединить идентичный код из 2 отдельных функций в 1 функцию.

В моем случае:

jQuery('body').on('click', '.some_div', function (e) {
    // Long and fancy code
});

jQuery(window).resize(function () {
    // Do the same fancy stuff (identical code)
});
Автор: Nikita 웃 Источник Размещён: 23.12.2015 09:04

Ответы (4)


5 плюса

70938 Репутация автора

Вы можете создать функцию для обработки обоих событий и передать эту ссылку на функцию обработчикам событий.

function myHandler(e) {
    // Long and fancy code
}

jQuery('body').on('click', '.some_div', myHandler);

jQuery(window).resize(myHandler);
Автор: Tushar Размещён: 23.12.2015 09:05

15 плюса

268170 Репутация автора

Решение

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

function doSomething(e) {
    console.log('Your code here...');
}

jQuery('body').on('click', '.some_div', doSomething);
jQuery(window).resize(doSomething);

Имейте в виду, что ссылка на thisбудет отличаться в зависимости от инициируемого события, если оно будет использоваться в вашей doSomethingфункции.

Автор: Rory McCrossan Размещён: 23.12.2015 09:05

3 плюса

10770 Репутация автора

создайте отдельную функцию и вызывайте ее из необходимых мест:

jQuery('body').on('click', '.some_div', function(e){
    myFunction();
});


jQuery(window).resize(function() {
    myFunction();
});

function myFunction(){
   // Long and fancy code
}
Автор: vijayP Размещён: 23.12.2015 09:07

4 плюса

359 Репутация автора

Есть еще один способ сделать это.

jQuery('body').on('click', '.some_div', function (e) {
    // Long and fancy code
});

jQuery(window).resize(function () {
    $('.some_div').trigger('click')
});
Автор: gaowhen Размещён: 23.12.2015 09:20
Вопросы из категории :
32x32