Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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_Closest - Fatal编程技术网

Javascript 使用最近函数时出现问题

Javascript 使用最近函数时出现问题,javascript,jquery,closest,Javascript,Jquery,Closest,我正在尝试为仪表板制作一个侧栏菜单。我想用.closest实现它,因为它适合我的代码。下面是一个简单的例子,说明我正在尝试做什么: 为什么最近的span(在本例中是唯一的span)文本没有被替换为“-”?在我的代码中,我有 $('.' + Key).closest( '.' + Key ).css("color", "#000"); 这段代码工作得很好,但JSFIDLE中的代码却不行 函数不正确:。最近(选择器)返回:jQuery 描述:对于集合中的每个元素,通过测试元素本身并在DOM树中遍历

我正在尝试为仪表板制作一个侧栏菜单。我想用.closest实现它,因为它适合我的代码。下面是一个简单的例子,说明我正在尝试做什么:

为什么最近的span(在本例中是唯一的span)文本没有被替换为“-”?在我的代码中,我有

$('.' + Key).closest( '.' + Key ).css("color", "#000");

这段代码工作得很好,但JSFIDLE中的代码却不行

函数不正确:。最近(选择器)返回:jQuery 描述:对于集合中的每个元素,通过测试元素本身并在DOM树中遍历其祖先,获取与选择器匹配的第一个元素

您需要的是
prev
,它查找元素之前的第一个同级

$(document).ready(function() {
  $('.sub').prev('li').find('span').text('-');
});

来自jQuery文档

给定一个表示一组DOM元素的jQuery对象,.closest()方法在DOM树中搜索这些元素及其祖先,并从匹配的元素构造一个新的jQuery对象

您的
span
既不是DOM中
div.sub
的父元素,也与
$(“.sub”)
规则不匹配

使jQuery代码与HTML结构一起工作的唯一方法是:

$("#plusMinus1").text("-");
或者修改您的HTML结构以匹配
.closest()
方法要求

当你去见父母时,你会死在尸体里。从那里你可以找到跨度

$(文档).ready(函数(){
$(“.sub”).parent().find(“span”).text(“-”);
});

    遍历DOM并用于嵌套元素

    在标记中,您的
    div
    不是span的后代,甚至不是兄弟

    你有 1.检索上一个兄弟姐妹(正文之后的第一个
    li
    ) 2.并在
    li

    $(document).ready(function() {
      $(".sub").prev().find('span').text('-');
    });
    
    另外,在您的小提琴中,您忘了包括jQuery


    这是一个工作代码:

    sub
    span
    都应该作为字符串输入,并用
    。仍然不起作用您没有将jQuery包含在小提琴中,因此未定义
    $
    。另外,最接近的方法会在元素树上出现,但是span元素是同级元素的子元素,因此找不到它。为什么
    .closest
    与您的代码正确匹配。您似乎没有包括jquery。2.也许使用
    。兄弟姐妹
    ,然后查找
    span
    会更合适。例如:我添加了jQuery。现在,问题是如果我有多个跨距,那么它会用一个“-”来代替所有跨距。有没有办法找到最接近“.sub”的跨度并仅替换它?