2013-11-09 3 views
0

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

$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(); 
}); 

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

ответ

2

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

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

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

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

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

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

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

+0

я не могу объединить переменную теперь, как мы используем его глобально – supersaiyan

+0

@Sachin Равал: попробуйте мой обновленный ответ –

+0

его не работает – supersaiyan

0
$test  = $('.slider li a'); 

$test.click(function(e) { 
    e.preventDefault(); 
    sliderHandler.slideFirst(); 
    if ($(this).parent().hasClass('slide1')) 
     alert("1"); 
}); 
+0

Я думаю, мой код более короче, чем ваш :-P – supersaiyan

+0

Не хотите объединить функции и удалить дублирование кода? –

+0

Я хочу уменьшить размер, а также – supersaiyan

1

Что об использовании .add метод JQuery (подобный ответ @Khanh то'с):

// 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

yeahhh его работает, но не знаю, почему код khanh не работает – supersaiyan

+0

его идеальный, но я думаю, что кредит идет на khanh .. без особых чувств :-) – supersaiyan

+0

Нет проблем - рад, что у вас есть решение! – doubleswirve

Смежные вопросы