Вызывать одну и ту же функцию jQuery в нескольких кнопках - программирование

Вызывать одну и ту же функцию jQuery в нескольких кнопках

Я не очень хорошо знаком с jQuery. У меня есть этот код, который я загрузил, чтобы создать всплывающее окно fade in/fade. Здесь код:

<script type='text/javascript'>
    $(document).ready(function() {
        $('#button').click(function(e) { 
            $('#modal').reveal({ 
                animation: 'fade',
                animationspeed: 150,
                closeonbackgroundclick: true, 
                dismissmodalclass: 'close'
            });
            return false;
        });
    });
</script>

Вышеприведенный код выполняется при нажатии кнопки с id='button'. Теперь у меня есть несколько кнопок, как я могу вызвать эту функцию на всех кнопках? Я попытался установить id всех кнопок на button, но работает только первая кнопка. Любая помощь будет очень высоко ценится. Кстати, я забыл упомянуть, в моем .php файле у меня есть эти коды:

for ($c=1;$c<=5;$c++){
echo "<input type='button' id='button'">
};

В этом php-коде будут отображаться 5 кнопок с тем же идентификатором, что и 'button'. Я хочу, чтобы это произошло, когда я нажимаю любую из 5 кнопок, которые будет исполнять функция jQuery, которая выдает форму fade in/fade out.

4b9b3361

Ответ 1

Первое решение:

function doClick(e) { 
   $('#modal').reveal({ 
     animation: 'fade',
     animationspeed: 150,
     closeonbackgroundclick: true, 
     dismissmodalclass: 'close'
   });
   return false;
}
$('#button1').click(doClick);
$('#button2').click(doClick);

Второе решение:

Дайте классу "someClass" всем задействованным кнопкам

<input type=button class=someClass ...

и do

$('.someClass').click(function(e) { 
...
});

Третье решение:

Используйте запятую для разделения идентификаторов:

$('#button1, #button2').click(function(e) { 
...
});

Как правило, лучшим решением является второе: он позволяет добавлять кнопки в код без изменения части javascript. Если вы добавите некоторые из этих кнопок динамически, вы даже можете сделать

$(document).on('click', '.someClass', function(e) { 
...
});

Ответ 2

Идентификаторы должны быть уникальными. Попробуйте использовать что-то вроде

$('input[type="button"]')

Ответ 3

ваш класс может вызывать их классом, используя , отдельный идентификатор

$(document).ready(function() {
$('#button, #button1, #button2').click(function(e) { 
$('#modal').reveal({ 
animation: 'fade',
animationspeed: 150,
closeonbackgroundclick: true, 
dismissmodalclass: 'close'
});
return false;
});
});​

Ответ 4

<script type='text/javascript'>
$(document).ready(function() {
$('#button1,#button2,#button3').click(function(e) { 
$('#modal').reveal({ 
animation: 'fade',
animationspeed: 150,
closeonbackgroundclick: true, 
dismissmodalclass: 'close'
});
return false;
});
});
</script>

или использовать класс, упомянутый bt dystroy

Ответ 5

Вы можете использовать имя класса css вместо id для достижения его, как показано ниже

<script type='text/javascript'>
$(document).ready(function() {
    $('.fade').click(function(e) { 
        $('#modal').reveal({ 
            animation: 'fade',
            animationspeed: 150,
            closeonbackgroundclick: true, 
            dismissmodalclass: 'close'
        });
        return false;
    });
});
</script>

и ваш html кнопок

<button class="fade">Button1</button>
<button class="fade">Button2</button>
<button class="fade">Button3</button>

Ответ 6

Используйте разные идентификаторы для кнопок и измените свою функцию, как показано ниже.

$('# button1, # button2, # button3'). click (function (e) {
.....

Ответ 7

Если вы используете ту же кнопку для всех кнопок, тогда нет необходимости называть все кнопки. Просто используйте этот код. Кажется, вы используете анимацию в этом коде.... хорошо используйте togglefade вместо раскрытия

<script type=text/javascript> $(document).ready(function(){ $("button").click(function(){ $("#buttonid").fadein(); $("#buttonid").fadeout(); }); }); </script>

Ответ 8

Создайте массив для уникального buttonid динамически в цикле, например

$button[] = '#'.$buttonid; 

Вне цикла используйте implode для преобразования этого массива в строку, разделенную запятыми

$jsstring = implode(",",$button);

Теперь используйте php для передачи над строкой как селектор в вашем js-коде, например:

$(document).ready(function() {
    $('< php echo $jsstring ; ?>').click(function(){ });
});

Ответ 9

Чтобы использовать более простые способы, как следующий код:

Способ 1:

<script>
    $(document).ready(function () {
        $('input:button[name="button1"],[name="button2"]').click(
            function () {
                alert('test')
            });
    });
</script>
<input type="button" id="button1" name="button1" value="Filter" />
<input type="button" id="button2" name="button2" value="Filter" />

Способ 2:

<script>
    $(document).ready(function () {
        $('button[id="button1"],[id="button2"]').click(
            function () {
                alert('te2222st')
            });
    });
</script>
<button id="button1" >bbbbb</button>
<button id="button2" >bbbbb</button>