Javascript 使用多个选择器简化隐藏/显示,以便在单击时单独显示
有人能帮我简化这个代码段吗?我希望能够写更少的代码行,而不是用不同的选择器重复相同的代码(听起来像一个循环,但我不知道怎么做) 问题是,当我放置多个用逗号分隔的类时,它们不会单独显示隐藏的内容Javascript 使用多个选择器简化隐藏/显示,以便在单击时单独显示,javascript,Javascript,有人能帮我简化这个代码段吗?我希望能够写更少的代码行,而不是用不同的选择器重复相同的代码(听起来像一个循环,但我不知道怎么做) 问题是,当我放置多个用逗号分隔的类时,它们不会单独显示隐藏的内容 $(document).ready(function(){ //hide show toggle Latest $(".more-text-latest, .more-text-latest-2").hide(); $(".read-more-latest").click(function(ev
$(document).ready(function(){
//hide show toggle Latest
$(".more-text-latest, .more-text-latest-2").hide();
$(".read-more-latest").click(function(event){
event.preventDefault();
$(".more-text-latest").slideToggle(600);
$(this).toggleClass(".more-text-latest");
});
$(".read-more-latest-2").click(function(){
$(".more-text-latest-2").slideToggle(600);
$(this).toggleClass(".more-text-latest-2");
});
如果您只想要一个做同样事情的循环,有几种方法可以实现它,例如:
$(document).ready(function () {
//hide show toggle Latest
[
'.read-more-latest',
'.read-more-latest-2'
].forEach(function (selector) {
var moreTextSelector = selector.replace('read-more', 'more-text');
$(moreTextSelector).hide();
$(selector).click(function (e) {
e.preventDefault();
$(moreTextSelector).slideToggle(600);
$(this).toggleClass(moreTextSelector);
if ($(this).hasClass(moreTextSelector)) {
$(this).html('Return');
}
else {
$(this).html('Read More');
}
});
});
});
如果您只想要一个做同样事情的循环,有几种方法可以实现它,例如:
$(document).ready(function () {
//hide show toggle Latest
[
'.read-more-latest',
'.read-more-latest-2'
].forEach(function (selector) {
var moreTextSelector = selector.replace('read-more', 'more-text');
$(moreTextSelector).hide();
$(selector).click(function (e) {
e.preventDefault();
$(moreTextSelector).slideToggle(600);
$(this).toggleClass(moreTextSelector);
if ($(this).hasClass(moreTextSelector)) {
$(this).html('Return');
}
else {
$(this).html('Read More');
}
});
});
});
这是一个只使用JavaScript的应用程序还是你有一些HTML示例?我正在构建这个:-这是一个只使用一些代码的简单网站。这是一个只使用JavaScript的应用程序还是你有一些HTML示例?我正在构建这个:-这是一个只使用一些代码的简单网站。这工作非常漂亮!我将重新应用代码到我的项目的其余部分。但这对我来说还是有点复杂。特别是调用事件以防止默认的部分。你能帮我理解-1和-2来自哪里吗?我还没有研究过事件。谢谢你们,海丹!另外,如果我想将“阅读更多”更改为单击后返回,反之亦然。我们可以把它添加到你的循环中吗?或者我需要构建另一个块吗?带-1的行只是if语句的简写,如果&&的左侧为true,则&&的右侧将运行,否则不会运行。在示例代码中,您在“.read-more-latest”的处理程序中调用了preventDefault(),但在“.read-more-latest-2”的处理程序中调用了preventDefault(),以便indexOf检查选择器中是否存在字符串“-2”,如果不存在,indexOf将返回-1并调用preventDefault()。不管怎样,我相信你甚至不需要那一行,可以完全删除它。我不确定我是否完全理解第二件事,你想在点击按钮后更改按钮的文本以表示“返回”吗?嘿,海丹,再次感谢你。你帮了大忙。你是对的,我需要点击按钮说“返回”。你能在下面检查一下我做错了什么吗?我尝试将您的代码重新应用到代码的另一部分,但它不起作用。我分为两条评论,效果很好!我将重新应用代码到我的项目的其余部分。但这对我来说还是有点复杂。特别是调用事件以防止默认的部分。你能帮我理解-1和-2来自哪里吗?我还没有研究过事件。谢谢你们,海丹!另外,如果我想将“阅读更多”更改为单击后返回,反之亦然。我们可以把它添加到你的循环中吗?或者我需要构建另一个块吗?带-1的行只是if语句的简写,如果&&的左侧为true,则&&的右侧将运行,否则不会运行。在示例代码中,您在“.read-more-latest”的处理程序中调用了preventDefault(),但在“.read-more-latest-2”的处理程序中调用了preventDefault(),以便indexOf检查选择器中是否存在字符串“-2”,如果不存在,indexOf将返回-1并调用preventDefault()。不管怎样,我相信你甚至不需要那一行,可以完全删除它。我不确定我是否完全理解第二件事,你想在点击按钮后更改按钮的文本以表示“返回”吗?嘿,海丹,再次感谢你。你帮了大忙。你是对的,我需要点击按钮说“返回”。你能在下面检查一下我做错了什么吗?我尝试将您的代码重新应用到代码的另一部分,但它不起作用。我分成两条评论。