Хороший селектор для удаления этого ужасного кода

StackOverflow https://stackoverflow.com/questions/1400232

  •  05-07-2019
  •  | 
  •  

Вопрос

может ли кто-нибудь предложить селектор, чтобы покончить с этим ужасным куском кода:

// img is the image element...
var descriptionContent = $(".descriptionContent", img.parent("td").parent("tr").next("tr"));

HTML выглядит так:

<table>
    <tr>
        <td><img /></td>
    </tr>
    <tr>
        <td><div class="descriptionContent" /></td>
    </tr>
    <!-- Repeat n times -->
</table>

Учитывая, что пользователь нажал на изображение, мне нужно получить следующее (и только следующее) .descriptionContent элемент.

Спасибо,
К

Это было полезно?

Решение

Поскольку вы беспокоитесь о том, чтобы обернуть изображение во что-нибудь, попробуйте следующее:

var descriptionContent = $(".descriptionContent", img.closest("tr").next("tr"));

Ближайшая команда находит ближайшего предка, соответствующего данному селектору. Глянь сюда.

Другие советы

Я думаю, вы еще много услышите о том, как это структурировано в целом.Если вы удалите таблицу, большая часть этой проблемы исчезнет.

Что-то вроде:

<div class="imgAndContent">
  <img src="blah.jpg">
  <span class="someDescription">Description.</span> <!-- or div, you choose based on your need -->
</div>

Тогда вы можете просто сделать...

var descriptionContent = $(this).next();

Когда пользователь нажимает...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top