Помогите с селектором jQuery - PullRequest
1 голос
/ 14 октября 2010

У меня есть следующая разметка

<div id="FirstDiv">
  <div class="MyClass">
      <span>
           <a href="#">link 1</a>
           <a href="#">link 2</a>
      </span>
  </div>
</div>
<div id="SecondDiv">
  <div class="MyClass">
      <span>
           <a href="#">link 1</a>
           <a href="#">link 2</a>
      </span>
  </div>
</div>

Как выбрать все элементы тега <a> внутри DIV "SecondDiv"?

На самом деле я делаю

$(".MyClass > a").click(function (event) {

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

Ответы [ 5 ]

4 голосов
/ 14 октября 2010
$('#SecondDiv a')

При этом используется идентификатор элемента SecondDiv и выбирается всех потомков <a> элементов.

Вы использовали дочерний селектор >, который будет выбирать только непосредственных детей.И вы правы, что он будет выбирать из обоих .MyClass элементов.

Другая возможность - поместить a .delegate() в элемент SecondDiv, чтобы сопоставлять клики с вложенными<a> элементов.

$('#SecondDiv').delegate( 'a', 'click', function() {
      // your code
});

РЕДАКТИРОВАТЬ: В отношении вашего комментария ниже, вы можете ограничить его до <a> элементов в элементе .MyClass, поместив этов селекторе.

$('#SecondDiv .MyClass a')

Теперь любые элементы <a>, которые не идут от .MyClass, не будут включены.

2 голосов
/ 14 октября 2010
$("#SecondDiv a").click(function(){
  alert("Hi-o");
});
2 голосов
/ 14 октября 2010

Вы должны использовать здесь ID Selector (#) вместо селектора класса (.)

$("#SecondDiv a").click(function (event) {

Подробнее о ID Selector и Class Selector .

1 голос
/ 14 октября 2010
$("#SecondDiv").find("a").click(function(event) {});
0 голосов
/ 14 октября 2010

почему я не могу использовать идентификатор второго div ('#second div')

или

http://api.jquery.com/children/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...