使用 child <div> 获取每个 <li> 并更改 <li> 的 <a> 属性
Get each <li> with child <div> and change the <li>'s <a> attribute
我正在禁用菜单中的链接并将它们变成手风琴式按钮。
有些链接没有 children(如果你愿意,可以下拉),我希望这些链接保留。
我想用 child Div 定位每个 LI 并更改 Li 的 a=href 值
我已经做到了,但我特别不想更改任何 Li 的 a=href 值,如果它首先没有 child Div。
这是我的代码:
$(window).on("resize", function() {
$(function() {
if ($(window).width() <= 900 & $( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).attr( 'href' ) != "#") {
$( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).each(function() {
var old = $(this).attr( 'href' );
$(this).attr( 'data-href', old);
$(this).attr( 'href', '#');
});
} if ($(window).width() > 900 & $( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).attr( 'href' ) == "#") {
$( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).each(function() {
var old = $(this).attr( 'data-href' );
$(this).attr( 'href', old);
});
}
});
}).resize();
你可以这样做:
if ($('li').children().length > 0)
{
//do something
}
或者:
if ($('li').children().length == 0)
{
//do something else
}
此外,您似乎没有循环遍历 li(否则我会建议使用 $(this))。绝对有更好的方法来完成选择这些元素。您的选择器(即 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' )有这么长的字符串,您可以在其中简化为简单的唯一 class 或 id.
您可以使用 jQuery has
方法仅 select 带有子 div 的 li,例如:
$('div.menu-main-menu-container > ul.main-menu > li.menu-item').has('div').children('a').....
你可以选择 li
第一个元素是 div
像这样:
$('li > div:first').each(function(){
$(this).parent('li')
......
});
希望对您有所帮助:)
我正在禁用菜单中的链接并将它们变成手风琴式按钮。 有些链接没有 children(如果你愿意,可以下拉),我希望这些链接保留。
我想用 child Div 定位每个 LI 并更改 Li 的 a=href 值 我已经做到了,但我特别不想更改任何 Li 的 a=href 值,如果它首先没有 child Div。
这是我的代码:
$(window).on("resize", function() {
$(function() {
if ($(window).width() <= 900 & $( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).attr( 'href' ) != "#") {
$( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).each(function() {
var old = $(this).attr( 'href' );
$(this).attr( 'data-href', old);
$(this).attr( 'href', '#');
});
} if ($(window).width() > 900 & $( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).attr( 'href' ) == "#") {
$( 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' ).each(function() {
var old = $(this).attr( 'data-href' );
$(this).attr( 'href', old);
});
}
});
}).resize();
你可以这样做:
if ($('li').children().length > 0)
{
//do something
}
或者:
if ($('li').children().length == 0)
{
//do something else
}
此外,您似乎没有循环遍历 li(否则我会建议使用 $(this))。绝对有更好的方法来完成选择这些元素。您的选择器(即 'div.menu-main-menu-container > ul.main-menu > li.menu-item > a' )有这么长的字符串,您可以在其中简化为简单的唯一 class 或 id.
您可以使用 jQuery has
方法仅 select 带有子 div 的 li,例如:
$('div.menu-main-menu-container > ul.main-menu > li.menu-item').has('div').children('a').....
你可以选择 li
第一个元素是 div
像这样:
$('li > div:first').each(function(){
$(this).parent('li')
......
});
希望对您有所帮助:)