Может работать простой шаблон регулярных выражений, такой как / \ d + /.
Что-то вроде:
$(".button2").click( function() {
ajaxFunction('#gallery' + this.id.match(/\d+/)[0]);
});
Редактировать: Судя по вашим комментариям, у вас есть ответ. Вам просто нужно применить это ко ВСЕМ кнопкам без добавления сотен обработчиков кликов:)
Для этого вам нужно заглянуть в event delegation
. JQuery обеспечивает это легко с помощью их метода on
. Например:
<div class="container">
<button class="button1">...</button>
<button class="button2">...</button>
<button class="button3">...</button>
<button class="button4">...</button>
<button class="button5">...</button>
</div>
<script>
$('.container').on('click', 'button', function () {
var $btn = $(this);
var className = $btn.attr('class'); // or Id
var idNum = className.match(/\d+/)[0];
ajaxFunction('#gallery' + idNum);
});
</script>
Нечто подобное позволит вам иметь один обработчик click
, который будет прослушивать все клики, которые bubble
от его дочерних элементов. Иногда люди делают что-то вроде:
$('body').on('click', '.selector', handler);
Как правило, вы хотите, чтобы обработчик был как можно ближе к вашим кнопкам.
Одним из основных преимуществ делегирования событий является то, что если у вас есть 1000 кнопок, на которые все должны ответить, вы привязываете только одного слушателя, а не тысячу слушателей для каждой кнопки. Кроме того, требуется всего одна строка скрипта, а не 1000 строк кода:)
Надеюсь, это поможет!
jQuery's по документации