Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   всплывание до класса (https://javascript.ru/forum/jquery/23422-vsplyvanie-do-klassa.html)

Артем125 22.11.2011 21:09

всплывание до класса
 
Здравствуйте!


подскажите, пожалуйста,

есть

<div class="c">
<form>
<input> и другие управляющие
</form>
</div>


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

как то так надо, не знаю как применить селектор :input

$('.c :input').hover(

function(){
  $(this).closest(".c").addClass("f");
},
function(){
  $(this).closest(".c").removeClass("f");
}

);


Спасибо!

melky 22.11.2011 21:20

Цитата:

Сообщение от Артем125 (Сообщение 138413)
необходимо, когда жмут на любой из управляющих элементов формы в данном классе "с", определять родителя с этим классом "с" и делать действия.

родитель уже определён. что вы имели в виду ?

поиск родителя с таким классом можно осуществить c помощью jQuery.parent([STR selector])

Артем125 22.11.2011 21:29

есть много div, в каждом из которых есть дочерние управляющие элементы. когда мы жмем на дочерний управляющий элемент, мы хотим узнать кто его родитель. сейчас $('.c').hover( нажимая на любой дочерний элемент мы определяем родителя, а нужно нажимая только на управляющий элемент

melky 22.11.2011 21:40

тогда нужно знать, до какого уровня необходимо подыматься.
если родительских дивов у элемента несколько, конечно.

можно проделегировать фокусы на всех инпутах на странице, а в обработчике уже решать, подходит ли он нам, или нет

допустим, эти все инпуты с их родителями находятся внутри div.mycont
, а все инпуты вложены в несколько div'ов, но самый "главный" из них имеет отличительную особенность - это может быть класс, ид, атрибут, что-нибудь ещё. тогда код будет примерно следующим.

$(".mycont").delegate(":input", "focus blur", function(event){
    
    var parent = $(this).parent("[id]");
    
    if(event.type=="focus")
        parent.addClass("f");
    else
        parent.removeClass("f");
    
});

Артем125 22.11.2011 21:49

а как думаете, там возможно?
$('.c div > form:input').hover(

function(){
  $(this).closest(".c").addClass("f");
},
function(){
  $(this).closest(".c").removeClass("f");
}

);


где $('.c div > form:input') по моей задумке, мы должны выбрать все элементы у тега form, которые лежат в блоке div класса "c"

melky 22.11.2011 21:52

Цитата:

Сообщение от Артем125 (Сообщение 138433)
где $('.c div > form:input') по моей задумке, мы должны выбрать все элементы у тега с именем form, которые лежат в блоке div класса "c"

ваш селектор отберёт все инпуты внутри формы, которая лежит на первом уровне вложенности внутри DIV, которые лежат где-то внутри элемента с классом "c".


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