Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Ограничить область действия функции (https://javascript.ru/forum/jquery/26903-ogranichit-oblast-dejjstviya-funkcii.html)

Nanto 27.03.2012 01:29

Ограничить область действия функции
 
Если есть куча клонированных элементов с одинаковыми классами, как ограничить область функции (чтобы классы "работали" как идентификаторы)?
Т.е. пример:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $(".a span").click(function(){
        $(".b").css("display", "block");
    });
});
</script>
<style type="text/css">
.a{
    position:relative;
    width:100px;
    height:100px;
    border:1px solid #000;
}
.b{
    display:none;
    position:absolute;
    width:50px;
    height:50px;
    top:25px;
    left:25px;
    background:red;
}
.a span{
    position:absolute;
    bottom:2px;
    right:2px;
    text-decoration:underline;
    cursor:pointer;
}
</style>
</head>
<body>
<div class="a">
    <div class="b"></div>
    <span>Клик</span> 
</div>
<div class="a">
    <div class="b"></div>
    <span>Клик</span> 
</div>
<div class="a">
    <div class="b"></div>
    <span>Клик</span> 
</div> 
</body>
</html>

atlantis 27.03.2012 01:51

$(document).ready(function(){
    $(".a").click(function(){
        $(this).children(".b").css("display", "block");
    });
});

Должно работать.

Nanto 27.03.2012 01:53

Кроме этого:
$(this).parents(".a").find(".b")

Можно как-то поэлегантнее? Т.е. заранее определить область действия нужных функций, и либо использовать сокращённую запись, либо дёргать функцию с параметрами?

Nanto 27.03.2012 01:59

atlantis,
да вот далеко не всегда инициализатор функции является родителем для "манипулируемого" элемента, чаще даже потомком или хрен знает каким "племянником".
Ну ладно, нашёл-таки функцию parents.
Но блин, неужто все таким "пердимоноклем" пишут?

Nanto 27.03.2012 03:18

nasqad,
Да Вы что?
У Вас есть более элегантное решение, как наплодить кучу одинаковых элементов?


Часовой пояс GMT +3, время: 04:26.