Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重复。切换类问题_Javascript_Jquery_Toggle_Toggleclass - Fatal编程技术网

Javascript 重复。切换类问题

Javascript 重复。切换类问题,javascript,jquery,toggle,toggleclass,Javascript,Jquery,Toggle,Toggleclass,我有一些重复的div,我正试图打开。切换class多个元素,在不改变其他元素的情况下指向正确的元素时遇到困难 基本上,我有一堆具有相同ID和类的div,我只想通过单击类“a_expander”的链接来切换每个div以进行扩展。我希望这样可以在“a#u collapse a#u expand”之间切换#result类,也可以在“rescellc rescellLe”之间切换#resthumb 看起来像这样 <div id="result" class="bg_fader scaler a_c

我有一些重复的div,我正试图打开。切换class多个元素,在不改变其他元素的情况下指向正确的元素时遇到困难

基本上,我有一堆具有相同ID和类的div,我只想通过单击类“a_expander”的链接来切换每个div以进行扩展。我希望这样可以在“a#u collapse a#u expand”之间切换#result类,也可以在“rescellc rescellLe”之间切换#resthumb 看起来像这样

<div id="result" class="bg_fader scaler a_collapse">
        <div id="resthumb" class="scaler rescellLc">
           <img src="img/fine-fur-coat.png" />
        </div>
            <div class="rescellC">
                <div class="res_content_album-title">
                    <h><a class="a_expander">Fine Fur Coat</a></h>
                    <p>3 Tracks | September 2012</p>
                </div>
</div>
<div id="result" class="bg_fader scaler a_collapse">
        <div id="resthumb" class="scaler rescellLc">
            <img src="img/tunneling.png" />
        </div>
            <div class="rescellC">
                <div class="res_content_album-title">
                    <h><a class="a_expander">Tunneling</a></h>
                    <p>15 Tracks | July 2011</p>
                </div>
            </div>
</div>

我正在使用.parent()访问外部div,但无法更改#resthumb only指向#结果。希望这不会让人感到困惑,有人可以提供帮助。非常感谢您的帮助。

首先消除前面海报中指出的重复ID。您不能在给定页面上多次使用同一ID


接下来,将对.sibles()的调用替换为对.closest()的调用。#result div不是锚定标记的同级。(jQuery中的同级表示两个或多个元素是同一父容器的子元素。)#result是链接的“祖先”(不是同级,不是父对象。如果愿意,更像是曾祖父)。要从锚定中获得结果,您必须升级到DOM的多个级别。使用.closest()进行此操作。

好的,这里有很多内容

第一:
我喜欢艾米丽·皮尔的曲调:)

第二:
我建议您考虑重构HTML——在试图找出它时,示例结构和样式名称非常混乱。如果您愿意进行重构,我会在这里使用一个更有效的方法来实现同样的示例:
<强> < /强>。 只需在一个位置进行切换(例如在唱片集级别)并让子节点利用该切换来调整其风格,这会更简洁。看看这个示例,您就会明白我的意思。顺便说一句,为了完整性起见,我还为示例添加了“Bang Bang”和一些封面图像。
以下是片段:

HTML:

CSS:

第三:
上面现有的HTML格式不正确——第一个结果中缺少一个结束div。这将导致jQuery选择器(可能还有布局)出现问题,具体取决于您使用的方法

最后:
如果您真的想使用现有的结构,我将提供一个示例,通过一些组合样式,将DOM遍历到要切换其类的节点。您可以在这里找到它:


祝你好运!

将你的css粘贴在这里或摆弄it@RobMdiv没有名称,它们可以有相同的类名。也许这就是你的意思。你不应该对多个div使用相同的id。id在文档中应该是唯一的。id没有css,我只是使用它们来让javascript定位和切换类。我应该int out这就是我要做的:基本上是一个可扩展元素的列表。非常感谢。你放在一起的内容与我要做的非常接近,只是我的Emily专辑封面的缩略图在折叠状态下可以显示为缩略图,我希望它们在我打开div时展开,这就是我尝试切换2个元素的原因。这就是为什么这是我遇到的问题。我可以得到一些类似于你没有问题的东西,但切换2项。而且我的div在我的代码中正确关闭,我只是在复制时在那里输入了一个拼写错误。我还需要显示隐藏的内容,我还没有得到。基本上我还应该添加我需要我的切换触发器呃是专辑的标题,而不是整个部门。很高兴能提供帮助。请注意“最终”中的链接“在我的回答中。这会分别切换两个元素。我已经用一个小的调整对它进行了更新,将相册封面的图像大小调整显示为一个切换,并将其放在这里:jsfiddle.net/KSeLL/4实际上,另一个具有重构HTML的示例也更改了多个显示项,但只需要进行一次“切换”更改,然后在“父项”处利用该更改在我看来,这使得管理和理解变得更加容易。
$('.a_expander').click(function () {
$(this).siblings('#result').toggleClass("a_collapse a_expand");
$(this).siblings('.resthumb').toggleClass("rescellLc rescellLe");
});
<div class="album notSelected">
    <div class="album_title">Fine Fur Coat</div>
    <div class="album_details">
        <div class="album_image">
            <img src="~/img/a3596975827_3.jpg" />
        </div>
        <div class="album_info">
            3 Tracks | September 2012
        </div>
    </div>
</div>    

<hr />
<div class="album notSelected" >
    <div class="album_title">Tunneling</div>
    <div class="album_details">
        <div class="album_image">
            <img src="~/img/a2007832660_3.jpg" />
        </div>
        <div class="album_info">
            15 Tracks | July 2011
        </div>
    </div>
</div>    

<hr />
<div class="album notSelected">
    <div class="album_title">Bang Bang</div>
    <div class="album_details">
        <div class="album_image">
            <img src="~/img/a3825495084_3.jpg" />
        </div>
        <div class="album_info">
            1 Track | January 2012
        </div>
    </div>
</div>    
$(function() {
    $(".album").click(function() {

        if ($(this).hasClass("selected")) {
            //The "selected" album was clicked, just toggle it to "notSelected"
            $(this).toggleClass("notSelected selected");
        }
        else {
            //Set all albums to "notSelected" and just toggle the clicked one to "selected"
            $(".album").removeClass("selected notSelected");
            $(".album").addClass("notSelected");
            $(this).toggleClass("notSelected selected");
        }
    });
});
.album {
    font-size: 15px;
    border-width: 2px;
    border-color: black;
    padding: 10px;
}

.album.notSelected{
    border-style: none;
}

.album.selected {
    border-style: solid;
}

.album_title{
    text-decoration: underline;
}

.album.selected .album_title {
    color: green;
    font-size: 30px;
}

.album.notSelected .album_details {
    display: none;
}

.album_image {
    padding: 10px;
}