Я пытаюсь сделать диапазон со стрелкой для открытия и закрытия с помощью перехода CSS, но он работает только тогда, когда я нажимаю стрелку для открытия, но не отвечаю на закрытие.
$(document).ready(function(){
$('#openarrow').click(function(){
var dsptmt = setTimeout(function(){ $('#usernameid').css('display', 'inline-block'); },1100);
$('.chip').width('170');
$('.arrow').removeClass('arright');
$('.arrow').addClass('arleft');
$('#openarrow').attr('id', 'closearrow');
})
$('#closearrow').click(function(){
$('.arrow').removeClass('arleft');
$('.arrow').addClass('arright');
$('#usernameid').css('display', 'none');
$('.chip').width('100');
$('#closearrow').attr('id','openarrow');
});
});
.chip {
font-family: 'Abel', sans-serif;
display: inline-block;
padding: 0 25px;
width:100px;
height: 50px;
font-size: 16px;
color: blue;
line-height: 50px;
border-radius: 25px;
background-color: #f1f1f1;
transition: width, 2s ;
}
#usernameid {
display:none;
}
.arrow {
border: solid black;
border-width: 0 3px 3px 0;
display: inline-block;
padding: 5px;
}
.arright {
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
}
.arleft {
transform: rotate(135deg);
-webkit-transform: rotate(135deg);
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "row">
<div class = "w3-container my-1 py-1 w3-light shadow" style = "position:relative;">
<div class = "col-lg-9 col-md-6 col-sm-4">
<div class = "chip">
<div id = "usernameid" style = "color:darkblue;"> FULL NAME </div>
<span id = "openarrow" class = "float-right"><a href = "#"><i class = "arrow arright"></i></a></span>
</div>
</div>
</div>
</div>
Мне нужно, чтобы #closearrow возвращал все изменения к значениям по умолчанию, когда я нажимаю стрелку открытия и закрытия.
Эта проблема заключается в том, что при применении обработчика событий не существует элементов с идентификатором #closearrow. Если вы хотите сохранить эту парадигму, один из вариантов — использовать всплытие событий, чтобы по существу применить обработчик событий к .chip для элемента closearrow, поскольку .chip всегда будет существовать. См. ниже.
$(document).ready(function(){
$('.chip').on('click', '#openarrow', function(){
var dsptmt = setTimeout(function(){ $('#usernameid').css('display', 'inline-block'); },1100);
$('.chip').width('170');
$('.arrow').removeClass('arright');
$('.arrow').addClass('arleft');
$('#openarrow').attr('id', 'closearrow');
})
$('.chip').on('click', '#closearrow', function(){
$('.arrow').removeClass('arleft');
$('.arrow').addClass('arright');
$('#usernameid').css('display', 'none');
$('.chip').width('100');
$('#closearrow').attr('id','openarrow');
});
});
.chip {
font-family: 'Abel', sans-serif;
display: inline-block;
padding: 0 25px;
width:100px;
height: 50px;
font-size: 16px;
color: blue;
line-height: 50px;
border-radius: 25px;
background-color: #f1f1f1;
transition: width, 2s ;
}
#usernameid {
display:none;
}
.arrow {
border: solid black;
border-width: 0 3px 3px 0;
display: inline-block;
padding: 5px;
}
.arright {
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
}
.arleft {
transform: rotate(135deg);
-webkit-transform: rotate(135deg);
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "row">
<div class = "w3-container my-1 py-1 w3-light shadow" style = "position:relative;">
<div class = "col-lg-9 col-md-6 col-sm-4">
<div class = "chip">
<div id = "usernameid" style = "color:darkblue;"> FULL NAME </div>
<span id = "openarrow" class = "float-right"><a href = "#"><i class = "arrow arright"></i></a></span>
</div>
</div>
</div>
</div>
Так хорошо .. восхитительное предложение, спасибо за выявление моей проблемы и вашу помощь
Не могу остановить тайм-аут, используя: clearTimeout(dsptmt); какие-нибудь предложения, пожалуйста?
Сделать из него исполняемый сниппет?
@FSD для того же кода, когда я использую стрелку закрытия `$('.chip').on('click', '#closearrow', function(){ clearTimeout(dsptmt); $('.arrow').removeClass( 'arleft'); $('.arrow').addClass('arright'); $('#usernameid').css('display', 'none'); $('.chip').width(' 100'); $('#closearrow').attr('id','openarrow'); });`
@FSDford спасибо за редактирование