Как выбрать «этот» селектор?

0

Я хочу, чтобы p был расширен при нажатии на div. Но когда я нажимаю на любой из двух div, все p расширяются, и, конечно, я хочу развернуть p, который является дочерним элементом щелчка div. Не все из них. Вот почему я использую эту строку:

        jQuery(this).find("p").toggle(500);

Но, очевидно, что-то не так. Что мне делать? Ниже я разместил больше кода. Заранее спасибо.

    <script type="text/javascript" src="Libraries/jquery.js"></script>
    <script type="text/javascript"> 
$(document).ready(function(){

$("p").hide();
    $(this).click(function(){
 jQuery(this).find("p").toggle(500);
 });

});
</script>

<style type="text/css"> 
.a{
background-image: url(Images/brandimage_74_238px.gif);
}
.b{
background-image: url(Images/someimage.gif);
}
</style>

</head>
<body>

<div class="a">
<p>aaaaaaaaaaaa aaaaaa a  aa a a a</p>
</div>

<div  class="b">
<p>bb b b b b b b b b b b b b b b b</p>
</div>

</body>
  • 0
    Что ты пытаешься сделать? первый this в $(this).click еще не имеет контекста, вам нужно сначала присоединить событие click к узлу ...
  • 0
    jsfiddle.net/arunpjohny/386tu/2
Теги:
this

3 ответа

1
Лучший ответ
$("p").hide();
    $(this).click(function(){
 jQuery(this).find("p").toggle(500);
 });

Вы привязываете событие click к документу. Вместо этого привяжите его к div:

$('div').click(function(){
   $(this).find("p").toggle(500);
 });
  • 0
    Оно работает. Благодарю.
0

Вы совершенно не понимаете this селектор:

$(document).ready(function(){
    $("p").hide();
        $(this).click(function(){
            jQuery(this).find("p").toggle(500);
        });
});

Сначала вы выполняете функцию jQuery в document, теперь селектор $(this), который вы используете после, ссылается на document, потому что он находится внутри функции $(document).ready.

Правильный способ сделать это:

$(document).ready(function(){
    $("p").click(function(){
        $(this).hide(){
   });
});

На мой взгляд, у вас есть первый селектор, если вы нажмете, то this означает p. Таким образом, в основном функция click для ВСЕХ объектов <p> в вашем HTML, но только <p> скроется, а с помощью $("p").hide() ВСЕ объекты <p> будут скрыты.

  • 0
    Теперь я это понимаю. В этом случае вы должны написать «div» вместо «p». Но спасибо за то, что вы высказали.
0

Используйте этот код:

$('div').click(function(){
  $(this).filter('p').toggle(500);
});

Вы были привязаны к document

Ещё вопросы

Сообщество Overcoder
Наверх
Меню