Сообщение от kvizor34
|
объясните только, как в данном случае будет расцениваться вызов функций?
|
Обычный вызов и все. Только this не сохраняется в ее контексте.
Вот вариант с сохранением контекста this
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.search-filter{
margin: 15px;
display: block;
color: #91959d;
font-size: 14px;
font-weight: 400;
line-height: 18px;
border: 1px solid #444444;
height: 40px;
overflow: hidden;
position: relative;
cursor: pointer;
user-select: none;
width: 300px
}
.search-filter__value{
color: #91959d;
font-size: 14px;
font-weight: 400;
line-height: 40px;
padding-right: 30px;
padding-left: 16px;
}
.search-filter__box {
line-height: 40px;
background-color: #fff;
}
.search-filter__box li{
padding-right: 30px;
padding-left: 16px;
}
.search-filter__box li:hover{
background-color: #BBBBBB;
color: #fff;
}
</style>
<script type='text/javascript'>
function selectboxopen() {
alert('Функция - '+this.tagName);
var currentValue = $(this).parent().css("overflow");
if (currentValue == "hidden") {
$(this).parent().css({"overflow":"visible","border-bottom-color":"transparent","background-color":"#F9F9F9"});
}
else {
$(this).parent().css({"overflow":"hidden","border-bottom-color":"#E5E5E5","background-color":"transparent"});
}
}
function selectboxselect() {
alert('Функция - '+this.tagName);
$(this).parent().parent().css({"overflow":"hidden","border-bottom-color":"#E5E5E5","background-color":"transparent"});
$(this).parent().siblings("p").text($(this).text());
}
$(document).ready(function (){
$('.search-filter > p.search-filter__value').click(function () {
alert('Обработчик - '+this.tagName);
selectboxopen.call(this);
});
$('.search-filter__box > li').click(function () {
alert('Обработчик - '+this.tagName);
selectboxselect.call(this);
})
});
</script>
</head>
<body>
<div class="search-filter">
<p class="search-filter__value">Поручения и рекомендации</p>
<ul class="search-filter__box">
<li>Поручения и рекомендации</li>
<li>Служебные переписки</li>
<li>Распорядительные документы</li>
</ul>
</div>
</body>
</html>
А можно его просто параметром передать при обычном вызове...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.search-filter{
margin: 15px;
display: block;
color: #91959d;
font-size: 14px;
font-weight: 400;
line-height: 18px;
border: 1px solid #444444;
height: 40px;
overflow: hidden;
position: relative;
cursor: pointer;
user-select: none;
width: 300px
}
.search-filter__value{
color: #91959d;
font-size: 14px;
font-weight: 400;
line-height: 40px;
padding-right: 30px;
padding-left: 16px;
}
.search-filter__box {
line-height: 40px;
background-color: #fff;
}
.search-filter__box li{
padding-right: 30px;
padding-left: 16px;
}
.search-filter__box li:hover{
background-color: #BBBBBB;
color: #fff;
}
</style>
<script type='text/javascript'>
function selectboxopen(Obj) {
alert('Функция - '+Obj.tagName);
var currentValue = $(Obj).parent().css("overflow");
if (currentValue == "hidden") {
$(Obj).parent().css({"overflow":"visible","border-bottom-color":"transparent","background-color":"#F9F9F9"});
}
else {
$(Obj).parent().css({"overflow":"hidden","border-bottom-color":"#E5E5E5","background-color":"transparent"});
}
}
function selectboxselect(Obj) {
alert('Функция - '+Obj.tagName);
$(Obj).parent().parent().css({"overflow":"hidden","border-bottom-color":"#E5E5E5","background-color":"transparent"});
$(Obj).parent().siblings("p").text($(Obj).text());
}
$(document).ready(function (){
$('.search-filter > p.search-filter__value').click(function () {
alert('Обработчик - '+this.tagName);
selectboxopen(this);
});
$('.search-filter__box > li').click(function () {
alert('Обработчик - '+this.tagName);
selectboxselect(this);
})
});
</script>
</head>
<body>
<div class="search-filter">
<p class="search-filter__value">Поручения и рекомендации</p>
<ul class="search-filter__box">
<li>Поручения и рекомендации</li>
<li>Служебные переписки</li>
<li>Распорядительные документы</li>
</ul>
</div>
</body>
</html>