2013-09-24 4 views
-4

У меня есть проблема:Jquery «это» вопрос Селектор

Когда я нажимаю на моем «.glass' Див он открывает несколько дивы» .permalinks', но я просто хочу, чтобы открыть один я нажимаю.

Это мой код:

<script type="text/javascript"> 
    $(window).ready(function() { 
     $('.glass').click(function() { 
      $('.permalinks').slideToggle(function() { 
      }); 
     }); 
    }); 
    </script> 

Это CSS:

.permalinks { 
     display:none; 
     position:absolute;top:0; 
     width:100%; 
     height:100%; 
     background:rgba(0,0,0,.7); 
    } 

    .reblog, .link, .like { 
     display:inline-block; 
     margin:2%; 
     margin-top:45%; 
     padding:7% 7% 4% 7%; 
    } 

    .reblog, .link, .like { 
     width:10%; 
    } 

    .reblog { 
     background:#317FD4; 
    } 

    .link { 
     background:#38C264; 
    } 

    .like { 
     background:#ED4A4A; 
    } 

    .glass { 
     position:absolute; 
     top:0; 
     left:0; 
     background:#f3f3f3; 
    } 

И это HTML-код:

 <div class="permalinks"> 

     <div class="reblog"><center><img src=""></center></div> 

     <div class="link"><center><img src=""></center></div> 

     <div class="like"><center><img src=""></center></div> 

     </div> 

     <img class="glass" src="" width="5%"> 

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

+6

Где' this' в этом? –

+2

Можете ли вы разместить HTML-код, соответствующий этому jquery? –

+1

Является ли '.permalinks' ребенком' .glass'? Может быть полезно увидеть HTML. – sbeliv01

ответ

0

.permalinks Если это ребенок .glass, то это легко:

$(window).ready(function() { 
     $('.glass').click(function() { 
      $(this).find('.permalinks').slideToggle(function() { 
      }); 
     }); 
    }); 
+0

Ха, почти идентично сформулированные ответы. Ну что ж. – kunalbhat

+0

@kunalbhat Я ответил 20 секунд + быстрее вас (в момент этого msg, у меня есть '1 минута назад', а ваш' 40 секунд назад'): D Хорошо, что мы думаем одинаково, давайте дадим себе +1 lol – RaphaelDDL

0

.permalinks Если это ребенок .glass, то вы можете выбрать его непосредственно на мыши.

$('.glass').on('click', function() { 
    $(this).find('.permalinks').slideToggle(); 
}); 
0

Два варианта:

  1. .permalinks после .glass в дереве DOM
    Использование $(this).next('.permalinks').slideToggle(function() {

  2. .permalinks находится перед .glass в DOM дереве
    Использование $(this).prev('.permalinks').slideToggle(function() {

+0

Это не работает , Я редактировал свой вопрос с помощью css и html. Скажите, пожалуйста, что я сделал неправильно. –

+0

@PaulBorsan, только что обновил мой ответ. Согласно вашему html, вам нужен мой вариант 2 (используя '.prev()', чтобы получить первый предыдущий родной брат.) – Sergio

+0

@PaulBorsan вы его работали? – Sergio

0

вы, вероятно, хотите

<script type="text/javascript"> 
$(window).ready(function() { 
    $('.glass').click(function() { 
     $(this).children('.permalinks').slideToggle(function() { 
     }); 
    }); 
}); 
</script> 
+0

Проблема с '.children()' заключается в том, что она просто пересекает один уровень dom. Поскольку мы не видели html OP, это может не сработать, если '.permalinks' вложен в другое. – RaphaelDDL

1

назначить нажмите на».permalinks' и использовать $ (это) .slideToggle()

$(window).ready(function() { 
    $('.permalinks').click(function() { 
     $(this).slideToggle(); 
    }); 
}); 

http://jsfiddle.net/yRFSV/

Смежные вопросы