Оператор jQuery if с селекторами

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Для jquery вы можете сделать что-то вроде этого: HTML:

     <div class = "div" id="one"> <div>
    <div class = "div" id="Two"> <div> 
  

Jquery:

      .onclick function for class .div
      { 
           if ($('#one')) //is selected
           { 
                    do this
            } 
           else if ($('#two'))
           {
                    do this
           }
  

Комментарии:

1. У вас есть реальная попытка или вы просто публикуете псевдокод

2. Почему бы вам не связать эти два элемента отдельно с чем-нибудь $("#one").on('click', function(){}); ?

Ответ №1:

Я думаю об этом

 $('body').on('click','.test',function () {
  
  if ( this.id === 'one' ) {
      alert('Click one');
    }
  if ( this.id === 'two' ) {
      alert('Click two');
    }
  });  
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div class="test" id="one">One</div>
<div class="test" id="two">Two</div>
</body>    

Альтернативный

 $('.test').click(function () {
  
  if ( this.id === 'one' ) {
      alert('Click one');
    }
  if ( this.id === 'two' ) {
      alert('Click two');
    }
  });  
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div class="test" id="one">One</div>
<div class="test" id="two">Two</div>
</body>    

Комментарии:

1. Я бы не хотел превращать свой bidy в onclick. Могу ли я просто присвоить обоим разделам одно и то же имя класса, а затем использовать функцию onclick с именем класса и использовать оператор if else, как у меня в op, выбирая определенные идентификаторы = true?

2. использование ‘$(‘.test’).onclick (…)` с тем же телом функции также будет работать

3. Да, спасибо, это именно то, что я хотел подтвердить

4. Сработало бы это, если бы у вас была оболочка div вокруг этих двух разделов? Например

5. Сработало бы это, если бы у вас был div, к которому вы добавили один из этих divs? Например, <div class = «добавить»></div><идентификатор div =»один»><div><идентификатор div =»два»><div>Затем в jquery сделайте что-то вроде: if ($(.append#one)) {сделай это} else if ($(.добавить #два)){сделай это}

Ответ №2:

Вы можете просто сделать

 $('#one').click(function() {
  //do this
});
$('#two').click(function() {
  //do this
});
  

Если оба div s имеют одинаковые class

 $('.classname#one').click(function() {
  //do this
});
$('.classname#two').click(function() {
  //do this
});
  

Если вы хотите ограничить это значением div s

 $('div.classname#one').click(function() {
  //do this
});
$('div.classname#two').click(function() {
  //do this
});
  

Комментарии:

1. Ну, дело в том, что это связано с игрой. И их полномочия присоединения различаются. Итак, если конкретный противник находится, скажем, в div A, то ему нужно будет нанести x количество урона. То же самое для выбранного вами проигрывателя. Итак, я подумал о том, чтобы дать им одно и то же имя класса, но разные идентификаторы. Используйте имя класса для функции onlick и идентификаторы в операторе if, но будет ли это работать?

2. да, if (this.id === '...') внутри общего обработчика

3. Если ваш документ содержит только один элемент с идентификатором one и two , тогда да