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