2017-02-03 1 views
0

Проблема, с которой я сталкиваюсь, заключается в том, что у меня одинаковые «кнопки-флажки», но один раз из них щелкнут, мне нужен только ближайший частный класс.Как переключить ближайший класс детей

<span class="button-checkbox"> 
    <button type="button" onclick="privateClick()" class="btn btn-sm btn-default"> 
     <i class="fa fa-square-o private"></i> 
    <button> 
    <input name="private" type="checkbox" class="hidden" /> 
</span> 
<span class="button-checkbox"> 
    <button type="button" onclick="privateClick()" class="btn btn-sm btn-default"> 
     <i class="fa fa-square-o private"></i> 
    <button> 
    <input name="private" type="checkbox" class="hidden" /> 
</span> 

настоящее время я использую:

function privateClick() 
{ 
    $(".private").toggleClass('fa-square-o fa-check-square-o'); 
} 

для переключения на кнопку "флажок". Но, очевидно, если есть более одной кнопки-флажка, все они переключаются. Поэтому я пытался:

var closest_tag = $(this).find('.private').first(); 
closest_tag.toggleClass('fa-square-o fa-check-square-o'); 

К сожалению, класс не переключается вообще.

Любая помощь была бы принята с благодарностью!

+1

Присоединить privateClick() для события нажатия вашей кнопки и изменить $ ("частное") to $ (this) – PersyJack

+0

Спасибо за комментарий! Проблема заключается в том, что класс .private находится внутри тега '', и, выполняя это изменение, классы в теге не меняются :( –

+0

Почему бы вам не опубликовать соответствующую часть вашего кода? Трудно сказать, что у вас есть – PersyJack

ответ

1

Избавьтесь от события OnClick и просто использовать JQuery на события, как это:

$("button").on("click", function(){ 
 
var itag = $(this).find("i"); 
 
    itag.toggleClass('fa-square-o fa-check-square-o'); 
 
    itag.text(itag.attr("class")) 
 
})
button{ 
 
    display:block; 
 
    padding:50px 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class="button-checkbox"> 
 
    <button type="button" id="1" data-color="white" class="btn btn-sm btn-default"> 
 
     <i class="fa fa-square-o private"></i> 
 
     </button> 
 
    <input name="private" type="checkbox" class="hidden" /> 
 
</span> 
 
<span class="button-checkbox"> 
 
    <button type="button" id="1" data-color="white" class="btn btn-sm btn-default"> 
 
     <i class="fa fa-square-o private"></i> 
 
     </button> 
 
    <input name="private" type="checkbox" class="hidden" /> 
 
</span/>

+0

спасибо! Это, похоже, работает для кнопок, созданных в момент загрузки страницы. пытаясь изменить этот скрипт [jQuery File Upload] (https://blueimp.github.io/jQuery-File-Upload/). Проблема заключается в том, что любая кнопка, созданная после завершения загрузки страницы, по какой-либо причине не работает с этими –

+1

Если вы добавляете кнопки после загрузки страницы, привяжите ее к документу и используйте класс btn для его фильтрации. Подобно этому $ (document) .on («click», «.btn», function () {// ваш код переключения Вот }); – PersyJack

Смежные вопросы