Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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
Jquery 将锚定值转换为父li类_Jquery - Fatal编程技术网

Jquery 将锚定值转换为父li类

Jquery 将锚定值转换为父li类,jquery,Jquery,我当然是jQuery的新手 我正在尝试获得锚定值,以改变它的父类li 我正在尝试的代码: jQuery('ul.menu').each(function(){ var turnClass = jQuery(this).find("a").val(); jQuery('ul.menu li').addClass(turnClass); }); 以下是我想做的: <ul class="menu"> <li class="home"><a hre

我当然是jQuery的新手 我正在尝试获得锚定值,以改变它的父类li

我正在尝试的代码:

jQuery('ul.menu').each(function(){
    var turnClass = jQuery(this).find("a").val();
    jQuery('ul.menu li').addClass(turnClass);
});
以下是我想做的:

<ul class="menu">
    <li class="home"><a href="#">Home</a></li>
    <li class="about-us"><a href="#">About Us</a></li>
    <li class="contact-us"><a href="#">Contact Us</a></li>
</ul>
您应该使用text或html方法而不是val,val用于获取/设置表单元素的值

但这不是脚本中唯一的问题,应该迭代li元素而不是ul元素。我建议:

$('ul.menu > li').addClass(function() {
    return $(this).children('a')
                  .text()
                  .trim()
                  .toLowerCase()
                  .replace(/\s+/g, '-');
});

使用.text,而不是.val。text获取元素中的任何文本。val从表单元素的“value”属性获取值。val用于获取输入元素的值,不能与锚定一起使用。如果要将文本放在锚点中,请使用.text。然后你需要每个循环来处理每个li,而不是整个ul菜单


你很接近。您需要使用文本来查找定位文本,并使用最近的文本来查找父元素。您还可以在初始查询中直接搜索a标记

在本例中,我还将类文本的大小写降低,并替换为-就像在示例类中一样

jQuery'ul.menu a'。每个函数{ var newClass=jQuerythis.text.replace/\s+/g'-'.toLowerCase; 最接近的'li'。addClassnewClass; }; .关于我们{ 颜色:绿色; } .家{ 颜色:红色; } .联系我们{ 颜色:蓝色; }
事实上,这是一件非常复杂的事情。我上面提到的html代码仅供您理解。试想我无法访问html。@Ask4Tec这是否意味着我建议的解决方案对您无效?如果是的话,你为什么不发布复杂的标记?对不起,你不明白我说的话。谢谢你的建议。@Ask4Tec欢迎你!我同意,而且您似乎不明白上面的代码是如何工作的!:@Ask4Tec好的,我刚刚将子代选择器更改为children,这样jQuery就可以选择直接子代a,而不是所有可能的子代a。另一个区别是缩进的可读性。实际上,此解决方案与Barmar解决方案之间唯一的主要区别是>选择器。
jQuery('ul.menu li').each(function() {
    var turnClass = $(this).find('a').text();
    turnClass = turnClass.replace(/ /g, '-').toLowerCase();
    $(this).addClass(turnClass);
});