один и тот же идентификатор и класс отображаются в разных подразделениях, когда все они разные

#javascript #html #jquery #class

#javascript #HTML #jquery #класс

Вопрос:

У меня есть это https://jsfiddle.net/jd6tw8fb/3 / когда я нажимаю на номер, предполагается, что он отображает свой собственный идентификатор или класс, но он всегда один и тот же, когда я пишу childrenImg на консоли, все идентификаторы и классы разные, также я хочу, чтобы это работало, поэтому я заменяю изображение наеще один, но опять же, он не работает, и я не знаю почему, получена любая идея

 let childrenBoth = $('div[class^="fila"], div[class^="pieceRow"]').children();
let childrenImg = $('div[class^="fila"]').children()

    $(childrenBoth).on('click', function () {

    var classes = $(this).attr('class')
    let idImg = $(childrenImg).attr('id')
    console.log(idImg)
    let classImg = $(childrenImg).attr('class')
    console.log(classImg)
    
    $(classImg).attr('src', 'https://www.logocrea.com/2/wp-content/uploads/2016/07/cuadrado.png')})
  

HTML и все остальное в скрипке

 div class="row ">
 <div class="col-md-8 ">
     <div class="card">
         <div class="card-body">
             <!-- <div class="card-title text-center p-2"><h5>Odontograma</h5></div> -->
             <br>
             <div class="pieceRow1">
                 <p class="pieza18" id="pieza18">18</p>
                 <p class="pieza17" id="pieza17">17</p>
                 <p class="pieza16" id="pieza16">16</p>
             </div>
             <div class="fila1 d-flex justify-content-leftr">
                 <div class="pieza18 "><img class="img-responsive" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/385126/600.jpg" alt="">
                 </div>
                 <div class="mr-3"></div>
                 <div class="pieza17"><img class="img-responsive" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/385126/600.jpg" alt="">
                 </div>
                 <div class="mr-3"></div>

                 <div class="pieza16"><img class="img-responsive" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/385126/600.jpg" alt="">
                 </div>
             </div>
         </div>
     </div>
 </div>
 </div>     
  

Ответ №1:

В вашем коде есть несколько проблем:

  1. Вы выбираете неправильные элементы
  2. Ваш обработчик click even пытается получить доступ к идентификатору и классу из других элементов, а не из текущего

Обновите его до:

 let childrenBoth = $('div[class^="fila"], div[class^="pieceRow"]').children();

$(childrenBoth).on('click', function() {
  let idImg = $(this).attr('id')
  let classImg = $(this).attr('class')

  $(`div.${classImg}>img`).attr('src', 'https://www.logocrea.com/2/wp-content/uploads/2016/07/cuadrado.png')
})