Я создаю простую карту "html". В основном наведите указатель мыши на маркер и всплывающее окно с подробностями. В любом случае, это в основном работает нормально, за исключением того, что я хочу добавить кнопку закрытия. Прямо сейчас пользователь может щелкнуть вне всплывающего окна и закрыть его, но мне нужно добавить кнопку закрытия в углу. Однако мое закрывающее событие не срабатывает. Пока я просто пытаюсь настроить его там, где пользователь щелкает в любом месте всплывающего окна, и он закрывается. Как только у меня это получится, я применим его к стилизованному div в контейнере. Вот пример моего HTML:Событие JQuery не срабатывает
<div id="container">
<div id="truck"><img src="eVie.png" width="637" height="280" alt="Evie" /></div>
<div class="marker a">
<div class="content a inactive"><img src="solarpanel.jpg" width="240" height="205" alt="Solar Panels" />
<h2>Solar Panels</h2>
<p>Here Comes The Sun: These solar panels capture light and heat from the sun to power exhibits when I’m out visiting around town.</p>
</div>
</div>
<div class="marker b">
<div class="content b inactive"><img src="tailpipe.jpg" width="240" height="205" alt="Tailpipe Area" />
<h2>Tailpipe Area</h2>
<p>No tailpipe, no fumes. That’s how I roll.</p>
</div>
</div>
<div class="marker c">
<div class="content c inactive"><img src="plug.jpg" width="240" height="205" alt="Plug" />
<h2>Plug</h2>
<p>Not An Ordinary Plug: Big trucks need more energy. To get all the energy I need, I have to have a bigger plug and a special outlet!</p>
</div>
</div>
</div>
И вот мой jQuery. Все это отлично работает, кроме функции content.active click. ЗАЧЕМ? Я в тупике!
$(document).ready(function(){
$(".marker").hover(
function(){
$(this).children(".content.inactive").addClass("show");
$(this).children(".content.inactive").animate({width: 155}, "fast");
}
,
function(){
$(this).children(".content.inactive").animate({width: 5, height: 23}, "fast");
$(this).children(".content.inactive").removeClass("show");
}
);
$(".content.inactive").click(
function(){
$(this).removeClass("inactive");
$(this).addClass("active");
$(this).animate({width: 435, height: 205}, "fast");
$(".inactive").addClass("disabled");
$(".disabled").removeClass("inactive");
$(".disabled").parent().addClass("dim");
$("#truck img").addClass("dim");
}
);
$(".content.active").click(
function(){
$(this).removeClass("active");
$(this).removeClass("show");
$(this).addClass("inactive");
$(this).animate({width: 5, height: 23}, "fast");
$(".disabled").addClass("inactive");
$(".disabled").parent().removeClass("dim");
$(".inactive").removeClass("disabled");
$("#truck img").removeClass("dim");
}
);
$(".content").click(function(){ return false; });
$(document).on("click", function() {
$(".content").animate({width: 5, height: 23}, "fast");
$(".disabled").addClass("inactive");
$(".inactive").removeClass("disabled");
$(".inactive").parent().removeClass("dim");
$("#truck img").removeClass("dim");
$(".active").addClass("inactive");
$(".show").removeClass("show");
$(".active").removeClass("active");
});
});
Вот ссылка на сайт: http://stlenergy.org/evie/
Любая помощь будет принята с благодарностью. Я уверен, что моя логика не правильная, или я пропускаю что-то больно очевидное. Благодаря!
Николь, я не знал этого в то время, но у jQuery есть метод .on(), который лучше всего соответствовал бы вашим потребностям. – mowwwalker
Спасибо, я посмотрю, как его отключить. Я использовал метод .on() для последней функции. Я думаю, что это относительно ново для jQuery (1.7). –