объединить две функции, которые имеют одинаковое свойство

0

У меня есть две функции, которые имеют одно и то же свойство. Но я не знаю, как объединиться в одной консолидированной функции, и я устал от нее, но не знаю, что именно ключевое слово для этого

$test  = $('.slider .pager li.slide1 a'),
$test1 = $('.slider .pagination li a')

$test.bind('click', function(e) {
    e.preventDefault();
    sliderHandler.slideFirst();
    alert("1");
});

 $test1.bind('click', function(e) {
    e.preventDefault();
    sliderHandler.slideFirst();
});

Его работа прекрасна для меня. Но я просто хочу сделать его более маленьким и приятным.

Теги:

3 ответа

2
Лучший ответ

Почему бы не попробовать?

$test = $('.slider .pager li.slide1 a,.slider .pagination li a'),

$test.bind('click', function(e) {
    e.preventDefault();
    sliderHandler.slideFirst();
    alert("1");
});

В вашем случае просто обновите селектор, чтобы выбрать все элементы, необходимые для применения той же логики.

Обновление: если они уже являются глобальными переменными, мы можем попытаться слить их:

$.merge( $.merge( [], $test), $test1).bind('click', function(e) {
    e.preventDefault();
    sliderHandler.slideFirst();
});

Как было указано в @doubleswirve в ответе ниже, мы могли бы также использовать add вместо merge: $test.add($test1).bind('click'

  • 0
    я не могу объединить переменную сейчас, поскольку мы используем ее глобально
  • 0
    @Sachin Rawal: попробуйте мой обновленный ответ
Показать ещё 5 комментариев
1

Как насчет использования метода jQuery .add (аналогично @Khanh TO):

// Assuming these have already been declared
$test  = $('.slider .pager li.slide1 a');
$test1 = $('.slider .pagination li a');

$test.add($test1).bind('click', function(e) {
  e.preventDefault();
  sliderHandler.slideFirst();
  alert("1");
});

Здесь CodePen демонстрирует аналогичный пример.

  • 0
    да, это работает, но не знаю, почему код хана не работает
  • 0
    это прекрасно, но я думаю, что заслуга хана .. без всяких обид :-)
Показать ещё 1 комментарий
0
$test        =   $('.slider li a');

$test.click(function(e) {
    e.preventDefault();
    sliderHandler.slideFirst();
    if ($(this).parent().hasClass('slide1'))
        alert("1");
});
  • 0
    Я думаю, мой код короче вашего :-P
  • 0
    Разве вы не хотите объединить функции и удалить дублирование кода?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню