У меня есть две функции, которые имеют одно и то же свойство. Но я не знаю, как объединиться в одной консолидированной функции, и я устал от нее, но не знаю, что именно ключевое слово для этого
$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();
});
Его работа прекрасна для меня. Но я просто хочу сделать его более маленьким и приятным.
Почему бы не попробовать?
$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'
Как насчет использования метода 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 демонстрирует аналогичный пример.
$test = $('.slider li a');
$test.click(function(e) {
e.preventDefault();
sliderHandler.slideFirst();
if ($(this).parent().hasClass('slide1'))
alert("1");
});