使用具有特定 class 和 toggleClass 的事件 ID
Using event ID with specific class and toggleClass
我在 jQuery 文档页面上的以下示例中使用 toggleClass 来创建 "Read More"/"Read Less" 解决方案:
http://api.jquery.com/toggleClass/
这是我正在使用的 HTML 代码:
<span id="block1-link" class="read-more-text more">Read More</span>
<span id="block1-content" class="sh-content">1st paragraph text<span class="read-more-text"> Hide Text</span></span>
<span id="block2-link" class="read-more-text more">Read More</span>
<span id="block2-content" class="sh-content">2nd paragraph text<span class="read-more-text"> Hide Text</span></span>
以及伴随的jQuery:
(function ($) {
$( ".read-more-text" ).click(function() {
$( ".sh-content" ).toggleClass( "show-text" );
$( ".read-more-text.more" ).toggleClass( "hide-text" );
});
}(jQuery));
现在,当我单击 "Read More" link 时,代码会显示两个文本块。我希望点击只影响相关 "block"。因此,如果我单击带 "block1-link" 的跨度,带 "block1-content" 的跨度应该切换。
我没有将 ID 直接添加到我的 jQuery 代码中的原因是,这需要对页面上任意数量的 link/content 分组有效。
我确定这是我明显遗漏的东西。我写的东西希望有人能帮我改正。
谢谢!
您可以使用当前元素点击上下文 this
来仅定位点击的和下一个 div 元素:
$( ".read-more-text" ).click(function() {
$(this).next().toggleClass( "show-text" );
$(this).toggleClass( "hide-text" );
});
试试这个。您可以使用 jquery.
的 .on()
$(".read-more-text" ).on( "click", function() {
$(this).next().toggleClass("show-text");
$(this).toggleClass("hide-text");
});
编辑:在同一主题上进一步发展,我调整了html 类,使其更清晰、更容易。
<span id="block1-link" class="read-more">Read More</span>
<span id="block1-content" class="sh-content">1st paragraph text<span class="hide-more"> Hide Text</span>
</span>
<span id="block2-link" class="read-more">Read More</span>
<span id="block2-content" class="sh-content">2nd paragraph text<span class="hide-more"> Hide Text</span></span>
$(".read-more" ).on( "click", function() {
$(this).next().toggleClass("show-text");
$(this).toggleClass("hide-text");
});
$(".hide-more" ).on( "click", function() {
$(this).parent().toggleClass("hide-text");
$(this).parent().prev().toggleClass("show-text");
});
我在 jQuery 文档页面上的以下示例中使用 toggleClass 来创建 "Read More"/"Read Less" 解决方案:
http://api.jquery.com/toggleClass/
这是我正在使用的 HTML 代码:
<span id="block1-link" class="read-more-text more">Read More</span>
<span id="block1-content" class="sh-content">1st paragraph text<span class="read-more-text"> Hide Text</span></span>
<span id="block2-link" class="read-more-text more">Read More</span>
<span id="block2-content" class="sh-content">2nd paragraph text<span class="read-more-text"> Hide Text</span></span>
以及伴随的jQuery:
(function ($) {
$( ".read-more-text" ).click(function() {
$( ".sh-content" ).toggleClass( "show-text" );
$( ".read-more-text.more" ).toggleClass( "hide-text" );
});
}(jQuery));
现在,当我单击 "Read More" link 时,代码会显示两个文本块。我希望点击只影响相关 "block"。因此,如果我单击带 "block1-link" 的跨度,带 "block1-content" 的跨度应该切换。
我没有将 ID 直接添加到我的 jQuery 代码中的原因是,这需要对页面上任意数量的 link/content 分组有效。
我确定这是我明显遗漏的东西。我写的东西希望有人能帮我改正。
谢谢!
您可以使用当前元素点击上下文 this
来仅定位点击的和下一个 div 元素:
$( ".read-more-text" ).click(function() {
$(this).next().toggleClass( "show-text" );
$(this).toggleClass( "hide-text" );
});
试试这个。您可以使用 jquery.
的 .on()$(".read-more-text" ).on( "click", function() {
$(this).next().toggleClass("show-text");
$(this).toggleClass("hide-text");
});
编辑:在同一主题上进一步发展,我调整了html 类,使其更清晰、更容易。
<span id="block1-link" class="read-more">Read More</span>
<span id="block1-content" class="sh-content">1st paragraph text<span class="hide-more"> Hide Text</span>
</span>
<span id="block2-link" class="read-more">Read More</span>
<span id="block2-content" class="sh-content">2nd paragraph text<span class="hide-more"> Hide Text</span></span>
$(".read-more" ).on( "click", function() {
$(this).next().toggleClass("show-text");
$(this).toggleClass("hide-text");
});
$(".hide-more" ).on( "click", function() {
$(this).parent().toggleClass("hide-text");
$(this).parent().prev().toggleClass("show-text");
});