添加 css class 以指定层次结构中的级别 select
adds css class to designate level in hierarcy select
这段代码应该可以帮助我定位菜单,但我不明白它是如何工作的,首先是什么意思?他们都是第一..第二和第三在哪里..
/** adds css class to designate level in hierarcy fselect **/
add_action( 'wp_footer', function() {
?>
<script>
(function($) {
$(document).on('facetwp-loaded', function() {
$.each( $( ".fs-option" ), function() {
var label = $(this).children(".fs-option-label").first().html();
if ( -1 !== label.indexOf(" ") ) {
$(this).addClass( 'third' );
} else if ( -1 !== label.indexOf(" ") ) {
$(this).addClass( 'second' );
} else {
$(this).addClass( 'first' );
}
} )
});
})(jQuery);
</script>
<?php
}, 100 );
在我应该这样做之后对吗?
.fs-option second:before{
content: "—";
}
.fs-option third:before{
content: "——";
}
不走运,它不是那样工作的..
也许我误解了他应该做什么?
这是我想做的事情的形象
在←右边我有
左边→我想做的
更新:整个html文本
<div class="facetwp-facet facetwp-facet-type facetwp-type-fselect" data-name="type" data-type="fselect">
<div class="fs-wrap fs-default" tabindex="0">
<div class="fs-label-wrap">
<div class="fs-label">Any Type</div>
<span class="fs-arrow"></span>
</div>
<div class="fs-dropdown hidden">
<div class="fs-search"><input type="text" placeholder="Search" /></div>
<div class="fs-no-results hidden">No results found</div>
<div class="fs-options">
<div class="fs-option selected g0" data-value="" data-index="0">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Any Type</div>
</div>
<div class="fs-option g0 d0" data-value="residential" data-index="1">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Residential</div>
</div>
<div class="fs-option g0 d1" data-value="apartment" data-index="2">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Apartment</div>
</div>
<div class="fs-option g0 d1" data-value="mainsion" data-index="3">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Mansion</div>
</div>
<div class="fs-option g0 d1" data-value="villa" data-index="4">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Villa</div>
</div>
<div class="fs-option g0 d0" data-value="commercial" data-index="5">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Commercial</div>
</div>
<div class="fs-option g0 d1" data-value="office" data-index="6">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Office</div>
</div>
<div class="fs-option g0 d1" data-value="shop" data-index="7">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Shop</div>
</div>
</div>
</div>
<select class="facetwp-dropdown hidden ready">
<option value="">Any Type</option>
<option value="residential" class="d0">Residential</option>
<option value="apartment" class="d1">Apartment</option>
<option value="mainsion" class="d1">Mansion</option>
<option value="villa" class="d1">Villa</option>
<option value="commercial" class="d0">Commercial</option>
<option value="office" class="d1">Office</option>
<option value="shop" class="d1">Shop</option>
</select>
</div>
</div>
编辑:
这段代码毫无意义,或者我太累了看不懂。
有了这个 css 我可以添加图片并定位我的价值
div[data-value="facet-value"] .fs-option-label {
background: url(http://example.com/content/uploads/2018/02/some-image.jpg) 0 0 no-repeat;
background-size: contain;
padding-left: 20px;
}
但是想象一下你只想用 parents 或孩子来做这件事你必须手动做是一场噩梦吗?
与此同时,这是逻辑的最后一个测试
(function($) {
$(document).on('facetwp-loaded', function() {
$.each( $( ".fs-option" ), function() {
var label = $(this).children(".fs-option-label").first().html();
if ( 2 !== label.indexOf(" ") ) {
$(this).addClass( 'third' );
} else if ( 1 !== label.indexOf(" ") ) {
$(this).addClass( 'second' );
} else {
$(this).addClass( 'first' );
}
} )
});
})(jQuery);
他们现在都是第三...
<div class="fs-options">
<div class="fs-option selected g0 third" data-value="" data-index="0"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Any Type</div>
</div>
<div class="fs-option g0 d0 third" data-value="residential" data-index="1"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Residential</div>
</div>
<div class="fs-option g0 d1 third" data-value="apartment" data-index="2"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Apartment</div>
</div>
<div class="fs-option g0 d1 third" data-value="mainsion" data-index="3"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Mansion</div>
</div>
<div class="fs-option g0 d1 third" data-value="villa" data-index="4"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Villa</div>
</div>
<div class="fs-option g0 d0 third" data-value="commercial" data-index="5"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Commercial</div>
</div>
<div class="fs-option g0 d1 third" data-value="office" data-index="6"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Office</div>
</div>
<div class="fs-option g0 d1 third" data-value="shop" data-index="7"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Shop</div>
</div>
</div>
编辑
谢谢你的耐心和帮助
我试着遵循你的代码和我自己的逻辑,现在它一定是这样的
但令人惊讶的是……它也不是那样工作的。
奇怪
(function($) {
$(document).on('facetwp-loaded', function() {
$.each( $( ".fs-option" ), function() {
if $(".fs-option.d0"){$(this).addClass('first');}
if $(".fs-option.d1"){$(this).addClass('second');}
if $(".fs-option.d2"){$(this).addClass('third');}
else {$(this).addClass( 'first' );}
});
})(jQuery);
我们必须切换到 CSS 暴力破解模式吗?
这很烦人,它限制了我自定义菜单的灵活性
编辑
蛮力 CSS 模式对我有用,
我终于找到了自由和灵活性
我不知道是谁写了这个恶魔代码来尝试我不知道有什么用..如果你有任何解释..
/* Get this parent An (★)*/
.fs-open .g0.d0 div:before{
content:"★";
padding-right:2px;
}
/* Get this child An Em Dash (—)*/
.fs-open .g0.d1 div:before{
content:"—";
padding-right:2px;
}
/* Global align */
.fs-open .g0 div{
padding-left:10px!important;
}
再次感谢您,我将您的回答标记为有效,因为您努力帮助了我
如果 d1
class 是 child
那么您可以简单地使用 $(".fs-option.d1")
定位所有 d1
div 并向它们添加 class addClass("child")
无需使用每个循环。
演示代码 :
//get fs-option.d1 add class there
$(".fs-option.d1").addClass("child")
.fs-option.child:before {
content: "——";
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="fs-dropdown hidden">
<div class="fs-options">
<div class="fs-option selected g0" data-value="" data-index="0">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Any Type</div>
</div>
<div class="fs-option g0 d0" data-value="residential" data-index="1">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Residential</div>
</div>
<div class="fs-option g0 d1" data-value="apartment" data-index="2">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Apartment</div>
</div>
<div class="fs-option g0 d1" data-value="mainsion" data-index="3">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Mansion</div>
</div>
<div class="fs-option g0 d1" data-value="villa" data-index="4">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Villa</div>
</div>
<div class="fs-option g0 d0" data-value="commercial" data-index="5">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Commercial</div>
</div>
<div class="fs-option g0 d1" data-value="office" data-index="6">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Office</div>
</div>
<div class="fs-option g0 d1" data-value="shop" data-index="7">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Shop</div>
</div>
</div>
</div>
这段代码应该可以帮助我定位菜单,但我不明白它是如何工作的,首先是什么意思?他们都是第一..第二和第三在哪里..
/** adds css class to designate level in hierarcy fselect **/
add_action( 'wp_footer', function() {
?>
<script>
(function($) {
$(document).on('facetwp-loaded', function() {
$.each( $( ".fs-option" ), function() {
var label = $(this).children(".fs-option-label").first().html();
if ( -1 !== label.indexOf(" ") ) {
$(this).addClass( 'third' );
} else if ( -1 !== label.indexOf(" ") ) {
$(this).addClass( 'second' );
} else {
$(this).addClass( 'first' );
}
} )
});
})(jQuery);
</script>
<?php
}, 100 );
在我应该这样做之后对吗?
.fs-option second:before{
content: "—";
}
.fs-option third:before{
content: "——";
}
不走运,它不是那样工作的..
也许我误解了他应该做什么?
这是我想做的事情的形象
在←右边我有
左边→我想做的
更新:整个html文本
<div class="facetwp-facet facetwp-facet-type facetwp-type-fselect" data-name="type" data-type="fselect">
<div class="fs-wrap fs-default" tabindex="0">
<div class="fs-label-wrap">
<div class="fs-label">Any Type</div>
<span class="fs-arrow"></span>
</div>
<div class="fs-dropdown hidden">
<div class="fs-search"><input type="text" placeholder="Search" /></div>
<div class="fs-no-results hidden">No results found</div>
<div class="fs-options">
<div class="fs-option selected g0" data-value="" data-index="0">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Any Type</div>
</div>
<div class="fs-option g0 d0" data-value="residential" data-index="1">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Residential</div>
</div>
<div class="fs-option g0 d1" data-value="apartment" data-index="2">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Apartment</div>
</div>
<div class="fs-option g0 d1" data-value="mainsion" data-index="3">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Mansion</div>
</div>
<div class="fs-option g0 d1" data-value="villa" data-index="4">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Villa</div>
</div>
<div class="fs-option g0 d0" data-value="commercial" data-index="5">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Commercial</div>
</div>
<div class="fs-option g0 d1" data-value="office" data-index="6">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Office</div>
</div>
<div class="fs-option g0 d1" data-value="shop" data-index="7">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Shop</div>
</div>
</div>
</div>
<select class="facetwp-dropdown hidden ready">
<option value="">Any Type</option>
<option value="residential" class="d0">Residential</option>
<option value="apartment" class="d1">Apartment</option>
<option value="mainsion" class="d1">Mansion</option>
<option value="villa" class="d1">Villa</option>
<option value="commercial" class="d0">Commercial</option>
<option value="office" class="d1">Office</option>
<option value="shop" class="d1">Shop</option>
</select>
</div>
</div>
编辑:
这段代码毫无意义,或者我太累了看不懂。 有了这个 css 我可以添加图片并定位我的价值
div[data-value="facet-value"] .fs-option-label {
background: url(http://example.com/content/uploads/2018/02/some-image.jpg) 0 0 no-repeat;
background-size: contain;
padding-left: 20px;
}
但是想象一下你只想用 parents 或孩子来做这件事你必须手动做是一场噩梦吗?
与此同时,这是逻辑的最后一个测试
(function($) {
$(document).on('facetwp-loaded', function() {
$.each( $( ".fs-option" ), function() {
var label = $(this).children(".fs-option-label").first().html();
if ( 2 !== label.indexOf(" ") ) {
$(this).addClass( 'third' );
} else if ( 1 !== label.indexOf(" ") ) {
$(this).addClass( 'second' );
} else {
$(this).addClass( 'first' );
}
} )
});
})(jQuery);
他们现在都是第三...
<div class="fs-options">
<div class="fs-option selected g0 third" data-value="" data-index="0"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Any Type</div>
</div>
<div class="fs-option g0 d0 third" data-value="residential" data-index="1"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Residential</div>
</div>
<div class="fs-option g0 d1 third" data-value="apartment" data-index="2"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Apartment</div>
</div>
<div class="fs-option g0 d1 third" data-value="mainsion" data-index="3"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Mansion</div>
</div>
<div class="fs-option g0 d1 third" data-value="villa" data-index="4"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Villa</div>
</div>
<div class="fs-option g0 d0 third" data-value="commercial" data-index="5"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Commercial</div>
</div>
<div class="fs-option g0 d1 third" data-value="office" data-index="6"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Office</div>
</div>
<div class="fs-option g0 d1 third" data-value="shop" data-index="7"><span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Shop</div>
</div>
</div>
编辑
谢谢你的耐心和帮助 我试着遵循你的代码和我自己的逻辑,现在它一定是这样的 但令人惊讶的是……它也不是那样工作的。 奇怪
(function($) {
$(document).on('facetwp-loaded', function() {
$.each( $( ".fs-option" ), function() {
if $(".fs-option.d0"){$(this).addClass('first');}
if $(".fs-option.d1"){$(this).addClass('second');}
if $(".fs-option.d2"){$(this).addClass('third');}
else {$(this).addClass( 'first' );}
});
})(jQuery);
我们必须切换到 CSS 暴力破解模式吗? 这很烦人,它限制了我自定义菜单的灵活性
编辑
蛮力 CSS 模式对我有用, 我终于找到了自由和灵活性 我不知道是谁写了这个恶魔代码来尝试我不知道有什么用..如果你有任何解释..
/* Get this parent An (★)*/
.fs-open .g0.d0 div:before{
content:"★";
padding-right:2px;
}
/* Get this child An Em Dash (—)*/
.fs-open .g0.d1 div:before{
content:"—";
padding-right:2px;
}
/* Global align */
.fs-open .g0 div{
padding-left:10px!important;
}
再次感谢您,我将您的回答标记为有效,因为您努力帮助了我
如果 d1
class 是 child
那么您可以简单地使用 $(".fs-option.d1")
定位所有 d1
div 并向它们添加 class addClass("child")
无需使用每个循环。
演示代码 :
//get fs-option.d1 add class there
$(".fs-option.d1").addClass("child")
.fs-option.child:before {
content: "——";
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="fs-dropdown hidden">
<div class="fs-options">
<div class="fs-option selected g0" data-value="" data-index="0">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Any Type</div>
</div>
<div class="fs-option g0 d0" data-value="residential" data-index="1">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Residential</div>
</div>
<div class="fs-option g0 d1" data-value="apartment" data-index="2">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Apartment</div>
</div>
<div class="fs-option g0 d1" data-value="mainsion" data-index="3">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Mansion</div>
</div>
<div class="fs-option g0 d1" data-value="villa" data-index="4">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Villa</div>
</div>
<div class="fs-option g0 d0" data-value="commercial" data-index="5">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Commercial</div>
</div>
<div class="fs-option g0 d1" data-value="office" data-index="6">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Office</div>
</div>
<div class="fs-option g0 d1" data-value="shop" data-index="7">
<span class="fs-checkbox"><i></i></span>
<div class="fs-option-label">Shop</div>
</div>
</div>
</div>