Хороший селектор для удаления этого ужасного кода - PullRequest
0 голосов
/ 09 сентября 2009

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

// 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>

Если пользователь нажал на img, мне нужно получить следующий (и только следующий) элемент .descriptionContent.

Спасибо,
K

Ответы [ 2 ]

5 голосов
/ 09 сентября 2009

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

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

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

0 голосов
/ 09 сентября 2009

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

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

<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();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...