2013-09-16 6 views
0

Скажем, у меня есть следующий HTML-макет:Отображение следующей ДИВ по щелчку

<div class="main"> 
    <div class="comment"> 
    <div class="info"> 
     <div class="data"> 
     <img src="image.png" class="image-click" /> 
     </div> 
    </div> 
    </div> 
    <div class="open-me"></div> 

    <div class="comment"> 
    <div class="info"> 
     <div class="data"> 
     <img src="image.png" class="image-click" /> 
     </div> 
    </div> 
    </div> 
    <div class="open-me"></div> 

    <div class="comment"> 
    <div class="info"> 
     <div class="data"> 
     <img src="image.png" class="image-click" /> 
     </div> 
    </div> 
    </div> 
    <div class="open-me"></div> 
</div> 

... etc ... 

Как бы сделать так, чтобы при нажатии на изображение в одном из comment классов, он показывает HTML в классе nextopen-me ?

Вот что я до сих пор:

$(document).ready(function() { 
    $(document).on("click", ".image-click", function() { 
    $.ajax({ 
     url: 'show_html.php', 
     type: "POST", 
     success: function() { 
     $(this).find(".open-me").html(); /* this is where I'm stuck */ 
     } 
    }); 
    }); 
}); 
+0

Добро пожаловать, вы не отправляете никаких параметров .. без необходимости GET/POST: D –

ответ

2

this внутри вашего метода успеха AJAX не относится к щелкнутому элементу больше. Для этого мы можем установить контекст переменной this:

$(document).on("click", ".image-click", function() { 
    var self = $(this); 
    $.ajax({ 
     url: 'show_html.php', 
     type: "POST", 
     success: function(data) { 
      self.parents(".comment").next(".open-me").html(data); 
     } 
    }); 
}); 
+0

Не работает. :/Он возвращает данные, но он никогда не показывает его. – Burrows

+0

@Burrows - Ну, вам нужно что-то сделать с этими «данными». Я добавил параметр к вашей функции 'success' и добавил его в HTML, попробуйте с новым кодом. – tymeJV

+0

У меня на самом деле есть набор данных в моем коде, но удалено, потому что я не думал, что это будет важно. Тем не менее, он все еще не работает. :/ – Burrows

1

Вы можете использовать это, чтобы получить доступ к родственному открытому меня. Кроме того, вы должны сохранить ссылку на $ (this) за пределами .ajax().

// outside the ajax function 
var that = $(this); 

// inside the ajax function 
that.parent(".comment").next("open-me").html(); 

Соответствующая документация jQuery о next().

+0

Сделал то, что вы предложили, и он все еще не работает. :/ – Burrows

+0

ОК, так что, возможно, вам нужно установить какой-то HTML? Если вы ничего не передадите в .html(), он вернет его. Если вы передадите что-то, например .html («

blah blah

»), он установит его. – Jordan

+0

Я фактически передаю данные, но не включил его здесь. Тем не менее, он все еще не работает даже с данными. : / – Burrows

Смежные вопросы