我正在尝试使用自定义HTML和JS为joomla创建一个“模块”。 我有4个div,每个div都有一些信息。 当我点击其中一个时,我点击的div信息必须出现... 问题是,我怎么做让它出现;只有我点击的div的信息......(?) 这是代码:
HTML
<div class="datos-lunares">
<div id="nueva" class="luna nueva">
<h2>Luna nueva</h2>
<div id="nueva-datos" class="datos close">
<p>Ideal para cosecha de raíz.</p>
<p>Retira las hojas y botones florales marchitos y secos.</p>
<p>Rotura los sustratos consiguiendo suelos más aireados y sueltos.</p>
<p>Disminuye la cantidad de agua en el riego.</p>
<p>Desmaleza tu huerta eliminando las malas hierbas.</p>
</div>
</div>
<div id="menguante" class="luna menguante">
<h2>Cuarto menguante</h2>
<div id="datos-menguante" class="datos close">
<p>Si tienes cultivos cuyos frutos son comestibles, recoléctalos,también es el período más propicio para recoger hortalizas de hoja.</p>
<p>Aumenta la cantidad de agua en el riego.</p>
<p>Trasplanta los cultivos que lo requieran.</p>
<p>Si utilizas fertilizantes líquidos, aplícalos en esta etapa.</p>
</div>
</div>
<div id="creciente" class="luna creciente">
<h2>Cuarto creciente</h2>
<div id="datos-creciente" class="datos close">
<p>Este período se considera propicio para sembrar y repicar las plantas cuyas partes comestibles están por encima de la tierra y dan frutos, como tomates,pimientos, guisantes, judías...</p>
<p>Aplica fertilizantes y abonos con previo laboreo del suelo.</p>
<p>Disminuye la cantidad de agua en el riego.</p>
</div>
</div>
<div id="llena" class="luna llena">
<h2>Luna llena</h2>
<div id="datos-llena" class="datos close">
<p>Siembra los vegetales cuya parte comestible crece bajo la tierra (zanahoria, patata, cebolla, etc).</p>
<p>Abona los cultivos con estiércol y restos de materia vegetal.</p>
<p>Aplica insecticidas orgánicos, esta fase es la más oportuna para controlar las plagas.</p>
<p>Riega sin mojar las yemas y botones florales.</p>
<p>Se sugiere realizar los injertos,trasplantes y podas.</p>
</div>
</div>
</div>
JQuery的
jQuery(document).ready(function() {
jQuery(this, ".luna").click(function() {
if (jQuery(".datos").hasClass("close")) {
jQuery(".datos").show("slow");
jQuery(".datos").removeClass("close");
jQuery(".datos").addClass("open");
} else {
jQuery(".datos").hide("slow");
jQuery(".datos").removeClass("open");
jQuery(".datos").addClass("close");
}
});
});
答案 0 :(得分:0)
jQuery(this)
与您实际所在的对象进行互动。find
班级'datos'
类似的东西:
jQuery(document).ready(function() {
jQuery(".luna").on('click', function() {
var $datos = jQuery(this).find(".datos");
if ($datos.hasClass("close")) {
$datos.show("slow").removeClass("close").addClass("open");
} else {
$datos.hide("slow").removeClass("open").addClass("close");
}
});
});
请参阅代码段示例:
jQuery(document).ready(function() {
jQuery(".luna").click(function() {
var $datos = jQuery(this).find(".datos");
if ($datos.hasClass("close")) {
$datos.show("slow").removeClass("close").addClass("open");
} else {
$datos.hide("slow").removeClass("open").addClass("close");
}
});
});
&#13;
.luna h2 {
color: red
}
.datos {
display: none
}
.datos.open {
color: green
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="datos-lunares">
<div id="nueva" class="luna nueva">
<h2>Luna nueva</h2>
<div id="nueva-datos" class="datos close">
<p>Ideal para cosecha de raíz.</p>
<p>Retira las hojas y botones florales marchitos y secos.</p>
<p>Rotura los sustratos consiguiendo suelos más aireados y sueltos.</p>
<p>Disminuye la cantidad de agua en el riego.</p>
<p>Desmaleza tu huerta eliminando las malas hierbas.</p>
</div>
</div>
<div id="menguante" class="luna menguante">
<h2>Cuarto menguante</h2>
<div id="datos-menguante" class="datos close">
<p>Si tienes cultivos cuyos frutos son comestibles, recoléctalos,también es el período más propicio para recoger hortalizas de hoja.</p>
<p>Aumenta la cantidad de agua en el riego.</p>
<p>Trasplanta los cultivos que lo requieran.</p>
<p>Si utilizas fertilizantes líquidos, aplícalos en esta etapa.</p>
</div>
</div>
<div id="creciente" class="luna creciente">
<h2>Cuarto creciente</h2>
<div id="datos-creciente" class="datos close">
<p>Este período se considera propicio para sembrar y repicar las plantas cuyas partes comestibles están por encima de la tierra y dan frutos, como tomates,pimientos, guisantes, judías...</p>
<p>Aplica fertilizantes y abonos con previo laboreo del suelo.</p>
<p>Disminuye la cantidad de agua en el riego.</p>
</div>
</div>
<div id="llena" class="luna llena">
<h2>Luna llena</h2>
<div id="datos-llena" class="datos close">
<p>Siembra los vegetales cuya parte comestible crece bajo la tierra (zanahoria, patata, cebolla, etc).</p>
<p>Abona los cultivos con estiércol y restos de materia vegetal.</p>
<p>Aplica insecticidas orgánicos, esta fase es la más oportuna para controlar las plagas.</p>
<p>Riega sin mojar las yemas y botones florales.</p>
<p>Se sugiere realizar los injertos,trasplantes y podas.</p>
</div>
</div>
</div>
&#13;
我没有意识到你在this
事件的分配上使用了click
...
...实际上,可以将第二个参数传递给构造函数,以避免find ()
函数,但必须在嵌套对象而不是容器中使用它。
实施例
jQuery(".luna").on('click', function() {
if (jQuery(".datos", this).hasClass("close")) { /*...*/ });
});
答案 1 :(得分:0)
我认为你想要一种像手风琴一样的东西:
$('.luna > h2').on('click', function(){
$(this).next('.datos').slideToggle();
//Or
$(this).next('.datos').toggleClass('close open');
});
您还可以查看jQuery UI Accordion
<强>更新强>
要在单击其中一个div时关闭所有其他div,您可以执行以下操作:
var next = $(this).next('.datos');
$('.datos').not(next).each(function(){
$(this).slideUp();
});
next.slideToggle();
答案 2 :(得分:-1)
请使用
$(this).find( "div" ).show("slow");
显示div。
答案 3 :(得分:-1)
我看到它的方式,你缺少CSS来定义信息块在具有类close
和open
时应该显示的方式,除非你有一些CSS链接到你还没有提到的文件。
所以你最终会在CSS文件中找到类似的东西:
.close
{
display: none;
}
.open
{
display: block;
}
或者更具体一点,避免与close/open
类的页面上的其他元素发生潜在冲突:
.datos.close
{
display: none;
}
.datos.open
{
display: block;
}