применяя одно и то же событие .click к двум различным элементам div - PullRequest
7 голосов
/ 18 июля 2011

у меня есть два разных div (код был упрощен, это не настоящий код).

<div id="test"></div>
<div id="funt"></div>

я хочу прикрепить одно и то же событие клика к #funt: что-то вроде:

$('#test').click(function() {
    DoWork();
});
$('#funt).click(function() {
    DoWork();
});

function DoWork(){
    alert('yes');
}

но разве нет способа определить несколько div для одного и того же события клика?

Допустим, (да, я знаю, это не работает!)

($('#test'),('#funt')).click(function(){alert('yes')});

Ответы [ 6 ]

18 голосов
/ 18 июля 2011

Просто:

$("#test, #funt").click(DoWork);

См. Множественный селектор.

0 голосов
/ 08 сентября 2016

Вы можете попробовать этот синтаксис для этого,

При работе с Classes

$(".className1, .className2, .classNameN").on('click', function(){
    Do_Some_Work();
});

При работе с Id's

$("#ID1, #ID2, #IDN").on('click', function(){
    Do_Some_Work();
});

При работе с Комбинация из ID и Class

<div id="z">z
    <div class="w">w</div>
    <div class="x">x</div>
   <div class="y">y</div>
</div>

$('#z.w , #z.y').on('click', function(){
    Do_Some_Work();
    //Pointer come here only when it click on `W` and `Y`
});
0 голосов
/ 18 июля 2011

У вас есть два варианта, либо вы можете присвоить оба этих div-класса классу, а затем просто запустить код:

$(".myclass").click(function() {
    DoWork();
});

Или вы можете определить функцию как:

function hookClick(arr, handler)  {
    foreach (var i in arr) {
        $(i).click(handler);
    }
}

затем запустите его, используя

hookClick(["#div1", "#div2"], function() { /*do sth cool })
0 голосов
/ 18 июля 2011

Вы были на самом деле довольно близко:

 $('#test, #funt').click(function() {
      });
0 голосов
/ 18 июля 2011

Назначьте класс своим div'ам, а затем назначьте событие click, используя класс следующим образом:

<div class="clickable" id="test"></div>
<div class="clickable" id="funt"></div>

Тогда

$('.clickable').click(function()
{
    DoWork();
});

Вы также можете перечислить идентификаторы как это:

$("#test, #funt").click(DoWork);

Я обычно стараюсь использовать классы, потому что когда вы имеете дело с несколькими div-ами, это чище - вам не нужно указывать ID каждого из них.

0 голосов
/ 18 июля 2011

Это должно работать

($('#test','#funt')).click(function(){alert('yes')});

http://api.jquery.com/multiple-selector/

...