Как насчет:
$("img.imgexpander").click
(
function()
{
var expandableDIVs = $(this)
.parents("div.bigdiv:first")
.find("div.expand");
expandableDIVs.toggle();
this.src = expandableDIVs.is(":visible") ? "img2.png" : "img1.png";
}
);
Этот код устанавливает обработчик события щелчка для всех элементов IMG класса imgexpander. Обработчик переключает видимость всех элементов DIV класса расширения. Атрибут src изображения обновляется путем проверки, видимы ли какие-либо элементы DIV, соответствующие «div.expand».
Обратите внимание, что я могу назначить JIV-упакованный набор DIV, соответствующих селектору div.expand, переменной JavaScript для дальнейшего использования.
Ключевое слово this
в обработчике событий ссылается на текущий элемент DOM, соответствующий селектору «img.imgexpander». Помните, что этому выражению может соответствовать несколько элементов.
РЕДАКТИРОВАТЬ : Метод получения элементов div.expand был обновлен для отражения изменений в OP. Только элементы DIV, которые являются дочерними элементами родительского класса DIV, классифицированного как bigdiv, будут переключаться при нажатии на img.
Обратите внимание, что были приняты меры, чтобы игнорировать способ разметки элементов. Для нас важно, чтобы у элемента IMG был родительский DIV где-то в его родительской цепочке класса bigdiv, но этот элемент не должен быть непосредственным родителем. Это причина моего использования псевдоселектора :first
.