Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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 removeClass()正在从DOM中完全删除元素_Javascript_Jquery_Html - Fatal编程技术网

Javascript removeClass()正在从DOM中完全删除元素

Javascript removeClass()正在从DOM中完全删除元素,javascript,jquery,html,Javascript,Jquery,Html,这是我之前问题的基础: 我现在在另一个中有一个。行为是一个可扩展的菜单。我通过添加和删除类来实现这一点。出于某种原因…在子列表上-它完全从DOM中删除元素,而不仅仅是切换它的类。为什么它会这样做 您可以看到以下示例: $(函数(){ //主膨胀元件 $(“.expander”)。单击(函数(){ var subShown=$(“ul>li”,this).hasClass(“show”); 如果(!subShown){ $(“.indented”,this).slideDown('100').a

这是我之前问题的基础:

我现在在另一个
中有一个
。行为是一个可扩展的菜单。我通过添加和删除类来实现这一点。出于某种原因…在子列表上-它完全从DOM中删除
  • 元素,而不仅仅是切换它的类。为什么它会这样做

    您可以看到以下示例:

    $(函数(){
    //主膨胀元件
    $(“.expander”)。单击(函数(){
    var subShown=$(“ul>li”,this).hasClass(“show”);
    如果(!subShown){
    $(“.indented”,this).slideDown('100').addClass(“show”);
    $(“.caret”,this.addClass(“reversedCaret”);
    }否则{
    $(“.indented”,this).slideUp('100').removeClass(“show”);
    $(“.caret”,this).removeClass(“reversedCaret”);
    }
    });
    //子膨胀元件
    $(“.sub扩展器,.caret”)。单击(函数(){
    var subSelectText=$(“.sub expander”).text();
    如果(子选择文本!=“更多”){
    $(“.indented--sub”,this).slideUp('100').removeClass(“show”);
    $(“.caret”,this).removeClass(“reversedCaret”);
    $(“.more或less”).text(“more”);
    }否则{
    $(“.indented--sub”,this).slideDown('100').addClass(“show”);
    $(“.caret”,this).removeClass(“reversedCaret”);
    $(“.more或less”).text(“Show less”);
    }
    });
    //停止.expander类中链接元素上的传播
    $(“.indented”)。单击(函数(事件){
    event.stopPropagation();
    });
    });
    
    .expander:悬停{
    光标:指针;
    }
    .子扩展器-缩进{
    填充:0 23px;
    }
    .亚插入符号{
    右边距:75px;
    }
    .缩进,
    .缩进--sub{
    显示:无;
    }
    .表演{
    显示:块;
    }
    
    +
    
      第1项
      • +
      • 更多

    您可能希望使用更严格的选择器

    在您的示例中,使用
    .sub expander
    选择要替换其文本的节点。但是,这与
    ul.子扩展器相匹配

    由于您希望它替换
    li.sub扩展器的文本,因此最简单的方法是使用更具体的选择器:
    
    $(“li.sub扩展器”).text(“显示较少”)
    (更好)指定包含要替换另一个类名、id或其他标识符的文本的节点,以防止指向不同的元素。

    您可能需要使用更严格的选择器

    在您的示例中,使用
    .sub expander
    选择要替换其文本的节点。但是,这与
    ul.子扩展器相匹配

    由于您希望它替换
    li.sub扩展器的文本,因此最简单的方法是使用更具体的选择器:
    
    $(“li.sub扩展器”).text(“显示较少”)
    (更好)给出包含要替换另一个类名、id或其他标识符的文本的节点,以防止指向不同的元素。

    如果HTML无效,则UL不应是其他UL的直接子级。UL的唯一有效子女是LI。另外,您的removeClass调用并没有删除您的内容,而是您的
    $(“.sub expander”).text()
    调用为什么没有?这表明情况并非如此:如果您正在使用
    text()
    方法删除项目,则需要等待。它将用您提供的文本替换所有子元素和内容。对于我在这里尝试的操作,什么是可行的替代方法?到目前为止,我已经尝试了
    .html()
    .replace()
    .replaceWith()
    您的html无效,UL不应该是其他UL的直接子女。UL的唯一有效子女是LI。另外,您的removeClass调用并没有删除您的内容,而是您的
    $(“.sub expander”).text()
    调用为什么没有?这表明情况并非如此:如果您正在使用
    text()
    方法删除项目,则需要等待。它将用您提供的文本替换所有子元素和内容。对于我在这里尝试的操作,什么是可行的替代方法?到目前为止,我已经尝试了
    .html()
    .replace()
    .replaceWith()
    我不认为这是一个选择器问题,因为我已经尝试给它一个唯一的类,在这样做的过程中,该子部分根本没有展开。因为您的“if”stil检查
    .sub expander
    文本值。我认为这不是选择器问题,因为我已经尝试给它一个唯一的类,在这样做时,该子部分根本没有展开。因为“if”stil检查
    .sub expander
    文本值。