查找元素并查看其是否 active/hasClass
Find element and see if its active/hasClass
我正在尝试访问传单地图中的按钮。该按钮是使用插件 "easy-button" 创建的。
我的主要目标是查看按钮是否已被单击(处于活动状态),我将在另一个函数中使用它进行验证,此处未显示。
这是按钮的 html 在浏览器调试器中的样子(我相信 html 是由插件创建的?)。
点击之前
<button class="easy-button-button leaflet-bar-part leaflet-interactive add-markers-active" title="Vis crosshair">
<span class="button-state state-add-markers add-markers-active">
<span class="fa fa-crosshairs fa-lg"></span>
</span>
</button>
点击后
<button class="easy-button-button leaflet-bar-part leaflet-interactive remove-markers-active" title="Fjern crosshair">
<span class="button-state state-remove-markers remove-markers-active">
<span class="fa fa-undo"></span>
</span>
</button>
此点击函数访问按钮并显示 'Button was clicked' 但 if 语句未通过。我在浏览器中使用复制 CSS 路径找到了按钮,但它看起来很长。
$("div.leaflet-bar.easy-button-container.leaflet-control > button > span").click(function(){
alert("Button was clicked");
if
($('span').hasClass('fa fa-crosshair fa-lg'))
{
alert('My button has active class')
}
});
对我做错了什么有什么建议吗?
这个
if($('span').hasClass('fa fa-crosshair fa-lg'))
不会以您期望的 span
为目标。
你想要
if($('span',this).hasClass('fa fa-crosshair fa-lg'))
定位您点击的跨度的子跨度
运行这个例子,希望对你有帮助:
$(document).ready(function() {
// My example to trigger the click on buttons..
$("button > span > span").click(function(){
alert("Button was clicked");
if (
//$(this).hasClass('fa') && <-- You don't need it, both have it
$(this).hasClass('fa-crosshairs') &&
$(this).hasClass('fa-lg')
) {
alert('My button has active class');
} else {
alert('Ops..');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Unclicked -->
<button class="easy-button-button leaflet-bar-part leaflet-interactive add-markers-active" title="Vis crosshair">
<span class="button-state state-add-markers add-markers-active">
<span class="fa fa-crosshairs fa-lg">click me</span>
</span>
</button>
<!-- Clicked -->
<button class="easy-button-button leaflet-bar-part leaflet-interactive remove-markers-active" title="Fjern crosshair">
<span class="button-state state-remove-markers remove-markers-active">
<span class="fa fa-undo">clicked</span>
</span>
</button>
我正在尝试访问传单地图中的按钮。该按钮是使用插件 "easy-button" 创建的。 我的主要目标是查看按钮是否已被单击(处于活动状态),我将在另一个函数中使用它进行验证,此处未显示。
这是按钮的 html 在浏览器调试器中的样子(我相信 html 是由插件创建的?)。
点击之前
<button class="easy-button-button leaflet-bar-part leaflet-interactive add-markers-active" title="Vis crosshair">
<span class="button-state state-add-markers add-markers-active">
<span class="fa fa-crosshairs fa-lg"></span>
</span>
</button>
点击后
<button class="easy-button-button leaflet-bar-part leaflet-interactive remove-markers-active" title="Fjern crosshair">
<span class="button-state state-remove-markers remove-markers-active">
<span class="fa fa-undo"></span>
</span>
</button>
此点击函数访问按钮并显示 'Button was clicked' 但 if 语句未通过。我在浏览器中使用复制 CSS 路径找到了按钮,但它看起来很长。
$("div.leaflet-bar.easy-button-container.leaflet-control > button > span").click(function(){
alert("Button was clicked");
if
($('span').hasClass('fa fa-crosshair fa-lg'))
{
alert('My button has active class')
}
});
对我做错了什么有什么建议吗?
这个
if($('span').hasClass('fa fa-crosshair fa-lg'))
不会以您期望的 span
为目标。
你想要
if($('span',this).hasClass('fa fa-crosshair fa-lg'))
定位您点击的跨度的子跨度
运行这个例子,希望对你有帮助:
$(document).ready(function() {
// My example to trigger the click on buttons..
$("button > span > span").click(function(){
alert("Button was clicked");
if (
//$(this).hasClass('fa') && <-- You don't need it, both have it
$(this).hasClass('fa-crosshairs') &&
$(this).hasClass('fa-lg')
) {
alert('My button has active class');
} else {
alert('Ops..');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Unclicked -->
<button class="easy-button-button leaflet-bar-part leaflet-interactive add-markers-active" title="Vis crosshair">
<span class="button-state state-add-markers add-markers-active">
<span class="fa fa-crosshairs fa-lg">click me</span>
</span>
</button>
<!-- Clicked -->
<button class="easy-button-button leaflet-bar-part leaflet-interactive remove-markers-active" title="Fjern crosshair">
<span class="button-state state-remove-markers remove-markers-active">
<span class="fa fa-undo">clicked</span>
</span>
</button>