2016-10-07 3 views
3

Я пытаюсь получить доступ к кнопке на моей карте листовка. Кнопка создается с помощью плагина «простая кнопка». Моя основная цель - посмотреть, нажата ли кнопка (активна), я буду использовать ее для проверки в другой функции, не показанной здесь.Найти элемент и посмотреть, если его активный/hasClass

Как выглядит 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> 

Этот щелчок доступа Функция кнопки и шоу «кнопка была нажата», но если заявление не проходит. Я добрался до кнопки, используя Копировать 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') 
     } 
}); 

Любые советы о том, что я делаю неправильно?

+1

Вам нужно для оценки фактического пробела внутри вашего селектора ... не все пролеты поэтому '$ ('span'). hasClass ...' должен быть '$ ('span', this) .hasClass ...' или '$ (this) .find ('span'). hasClass ...' ... Также просто найдите один класс перекрестие один – DaniP

ответ

1

Это

if($('span').hasClass('fa fa-crosshair fa-lg')) 

не нацелит span вы ожидаете его.

Вы хотели

if($('span',this).hasClass('fa fa-crosshair fa-lg')) 

Чтобы ориентировать ребенка промежуток пролете вы кликнули на

+0

** Будет нацелен на первый пролет на всей странице ** не является точным – DaniP

+0

@DaniP - [действительно] (https://jsfiddle.net/yL9r7fh7/)? Так что же тогда точно? – Jamiec

+1

https://jsfiddle.net/yL9r7fh7/1/ .... Фактически '$ ('span'). HasClass ('fa fa-crosshair fa-lg')' ... будет оценивать все 'span' чтобы найти тот, который соответствует условию наличия класса, если он найдет его, тогда условие истинно https://jsfiddle.net/yL9r7fh7/2/ .... поэтому это не первый пробег ** на страница – DaniP

1

запустить этот пример, надеюсь, что это помогает:

$(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>