Как я могу получить идентификатор определенного класса, используя jQuery? - PullRequest
2 голосов
/ 05 сентября 2011

У меня есть несколько элементов div с именем класса hover, у этих элементов div есть родительские элементы div с именем класса hoverparent, но идентификаторы этих родительских элементов отличаются.

Можно ли получить идентификатор соответствующего элемента .hoverparent при наведении на мои элементы .hover div?

Я пытался получить это:

$('.hoverparent').attr('id')

Но он каждый раз дает один и тот же первый родительский идентификатор.

Структура как:

<div class="hoverparent" id="hover-1">
<div class="hover">ABC</div>
</div>
<div class="hoverparent" id="hover-2">
<div class="hover">DEF</div>
</div>

Ответы [ 9 ]

4 голосов
/ 05 сентября 2011

Вам необходимо использовать функции parent или closest, чтобы пройти по дереву DOM и найти искомый родительский элемент:

$(".hover").hover(function() {
    var $parent = $(this).closest(".hoverparent");
    alert($parent.attr("id"));
});

Разница между parent и closest в том, что первый будет работать только в том случае, если элемент .hoverparent является непосредственным родителем элемента .hover; closest будет искать вверх по всем предкам, чтобы найти его.

1 голос
/ 05 сентября 2011

попробуйте $ (this) .parent (). Attr ('id') в обратном вызове при наведении курсора.

0 голосов
/ 05 сентября 2011

Попробуйте следующее:

$('.hover').hover(function() {
    var parentID = $(this).parent().attr('id');    alert(parentID);
});
0 голосов
/ 05 сентября 2011
$(".hover").hover(function(){

console.log($(this).closest(".hoverparent").attr("id"));
});

вот скрипка http://jsfiddle.net/9dJJ9/1/show/

0 голосов
/ 05 сентября 2011

Вы можете попробовать метод parent () .Как это:

$('a').click(function(){
  var parentId = $(this).parent('div.hoverparent').attr('id');
});
0 голосов
/ 05 сентября 2011

Используйте родительский метод в обработчике для события наведения мыши:

$('.hover').hover(function(evt){
    var par = $(this).parent().attr('id');
    //Now do with ID what you need
},
function(evt){
    //presumably you don't need anything for mouseout
});
0 голосов
/ 05 сентября 2011

Добавьте каждый цикл так:

$(".hoverparent").each(function(){
    var id=$(this).attr("id");
    alert(id);
 });
0 голосов
/ 05 сентября 2011

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

$(".hover").hover(
  function () {
   var id =  $(this).parent().attr('id');
  });
0 голосов
/ 05 сентября 2011
$('.hover').mouseover(function() {
    $(this).parent().attr('id');
});
...