Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Найти родителя с заданным классом и блок, идущий за ним (https://javascript.ru/forum/jquery/11673-najjti-roditelya-s-zadannym-klassom-i-blok-idushhijj-za-nim.html)

cristalith 06.09.2010 23:28

Найти родителя с заданным классом и блок, идущий за ним
 
На странице есть много подобных участков, div с класом "one" внутри которых ссылка с классом "two":
<div class="one">
  <table>
    <tr>
      <td><a class="two" href="#">Заметки</a></td>
      <td><a href="#">Подробнее</a></td>
    </tr>
  </table>
  <div class="123"></div>
</div>
<div class="todisplay"></div>

И jquery:
$(".two").click(
   function() {
     $(".todisplay").css("display","block");
   }
);

Как изменить код jquery, чтобы ("display","block") срабатывало только на "todisplay" идущем сразу за div внутри которого была нажата сслыка "two"? Т.е. чтобы все остальные блоки "todisplay" оставались невидимыми.

e1f 07.09.2010 12:33

$(".two").click( 
   function() { 
     $(this).closest(".one").next().css("display","block"); 
   } 
);

inGray 07.09.2010 13:23

Хм... Я бы использовал parents('.one')... e1f,
чем было бы хуже?

cristalith 07.09.2010 13:43

e1f,
inGray,
спасибо, работает, буду знать про обе функции.
Еще возникла проблема, при нажатии на ссылку срабатывает не только js но и href="#", как это можно решить?

exec 07.09.2010 13:49

$(".two").click( 
   function(e) {
     $(this).closest("div.one").next().css("display","block");
     (e = e || window.event).preventDefault? e.preventDefault() : (e.returnValue = false);
   } 
);

subzey 07.09.2010 14:18

Если обработчик устанавливается через jQuery, в IE объекту события дописывается метод preventDefault().

http://forum.jquery.com/topic/event-...default-and-ie

cristalith 07.09.2010 14:54

exec,
спасибо, работает. Эта строчка это какай-то вид сокращенной записи js ?
subzey,
не совсем понял где мне прописывать preventDefault(), или в этом случае (e = e || window.event).preventDefault? e.preventDefault() : (e.returnValue = false); уже это прописанно?

inGray 07.09.2010 15:11

Тут же все написано...
если существует preventDefault , то preventDefault, иначе (e.returnValue = false)

subzey 07.09.2010 15:33

inGray,
я к тому, что он всегда существует при таком раскладе :)

inGray 07.09.2010 15:38

хм.. Досоздается то, что МС не доделали? :) Похвально )


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