Я хочу, чтобы 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>
$("p").hide();
$(this).click(function(){
jQuery(this).find("p").toggle(500);
});
Вы привязываете событие click к документу. Вместо этого привяжите его к div:
$('div').click(function(){
$(this).find("p").toggle(500);
});
Вы совершенно не понимаете 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>
будут скрыты.
Используйте этот код:
$('div').click(function(){
$(this).filter('p').toggle(500);
});
Вы были привязаны к document
this
в$(this).click
еще не имеет контекста, вам нужно сначала присоединить событиеclick
к узлу ...