Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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 - Fatal编程技术网

Javascript 滑动切换已单击父对象的子类

Javascript 滑动切换已单击父对象的子类,javascript,jquery,Javascript,Jquery,我想循环浏览页面标题中的每个div,将click函数应用于匹配标题的每个div。然后,如果单击标题,它将滑动切换标题的子类 所以,若我点击heading_about heading,它会滑动切换菜单_about child class 我错过了什么 <div id="pageHeadings"> <div id="heading_practice"> <a href="#">

我想循环浏览页面标题中的每个div,将click函数应用于匹配标题的每个div。然后,如果单击标题,它将滑动切换标题的子类

所以,若我点击heading_about heading,它会滑动切换菜单_about child class

我错过了什么

<div id="pageHeadings">
    <div id="heading_practice">                     
        <a href="#">
           <p>Practice Areas</p>
        </a>
        <div class="menu_practice">
           <p>test</p>
           <p>test2</p>
        </div>
    </div>
    <div id="heading_about">                        
        <a href="#">
           <p>About</p>
        </a>
        <div class="menu_about">
           <p>test</p>
           <p>test2</p>
        </div>
    </div>
 </div>

$("#pageHeadings div[id^=heading]").click(function () { //apply click function to all headings
    $('#' + this.id).children().slideToggle("fast"); 
   //should show child class (click heading_about, it shows menu_about)
   //instead shows child class, but also toggles heading
});
尝试在this.id前面添加,并在本例中使用类幻灯片以菜单为目标:

$('#' + this.id + ' .slide').slideToggle("fast");

这可以通过不同的选择器实现您所需的功能。你把问题复杂化了

$('#pageHeadings > div').click(function(){
    $(this).children('div').slideToggle('fast');
});
我建议您将其用于链接,并添加“停止”以防止动画排队

这:

或者这个:

$("#pageHeadings div[id^=heading]").click(function () { //apply click function to all headings
    $(this).find('div').slideToggle("fast"); //show child class (click heading_about, it shows menu_about)
});

会有用的。顺便说一句,你不应该把链接环绕在段落周围。

你可以使用与选择标题部分相同的技巧,使用$this。使用以“menu”开头的类查找并选择子级:

$("#pageHeadings div[id^=heading]").click(function() {
    $(this).find('[class^=menu]').slideToggle("fast");
});
$this.id被转换为$heading_about,它不是有效的选择器

假设子级的类将采用menu_u+div的id格式,而不使用heading_about to class menu_about等单词heading id,那么您可以执行以下操作:

$("#pageHeadings div[id^=heading]").click(function () { //apply click function to all headings
    // take the parent div's id, replace "heading" with "menu" and use that as
    // the class selector for the menu.
    var childClass = this.id.replace("heading", "menu")
    $(this).find('div.' + childClass).slideToggle("fast"); //show child class (click heading_about, it shows menu_about)
});


我不想滑动切换标题。我想滑动切换孩子的班级啊,很公平,跳了,因为我看到了一个即时问题=P。更新了答案。谢谢。1为什么我不应该将链接环绕?2“$this.find'div”很好,但是如果我想向父级添加其他不应该更改的div呢?我怎样才能指定只有带有menu_uu类的子菜单才应该被修改?1在HTML5之前它是无效的,2您可以使用类、jQuery选择器等以多种方式将其作为目标。我只是基于您的示例。为什么我必须这样做。id.replace?尽管所有隐藏的menu div最好使用相同的类作为示例,.menu,然后您可以使用选择器:`$this.find'div.menu'@Growler,因为您要查找具有特定类的div,对吧,每个菜单的类根据您的代码而不同,格式菜单是div中id的一部分。因此,如果id heading\u about中有一个div,其中包含一个menu\u about类,您必须将单词标题替换为单词菜单,才能找到具有正确类的div。
$("#pageHeadings div[id^=heading]").click(function() {
    $(this).find('[class^=menu]').slideToggle("fast");
});
$("#pageHeadings div[id^=heading]").click(function () { //apply click function to all headings
    // take the parent div's id, replace "heading" with "menu" and use that as
    // the class selector for the menu.
    var childClass = this.id.replace("heading", "menu")
    $(this).find('div.' + childClass).slideToggle("fast"); //show child class (click heading_about, it shows menu_about)
});
$("#pageHeadings div[id^=heading]").click(function () { //apply click function to all headings
    $('#' + this.id).children("[class^=menu]").slideToggle("fast"); 
});
$("#pageHeadings div[id^=heading]").click(function () { //apply click function to all headings     
if($('#' + this.id).children("[class^=menu]").length) {
    $('#' + this.id).children("[class^=menu]").slideToggle("fast");      
}
});