Вопрос селектора Jquery: ссылка на конкретный элемент без знания идентификатора - PullRequest
1 голос
/ 16 декабря 2009

Есть ли способ ссылаться на элемент управления с помощью селектора Jquery, не зная идентификатора? Я представлял себе функцию, вызываемую при наведении мыши. Я просматривал документацию, но пока ничего не нашел, и у меня есть смутное ощущение, что я что-то упустил.

Обновление:

Зомбат, это кажется разумным, но у меня здесь есть проблема, которая, как мне кажется, не позволяет мне пойти по пути родитель -> ребенок. Это простая страница поиска, отображающая результаты для пользователя. Он был создан в приложении для генерации кода под названием Ironspeed Designer. Ironspeed, похоже, помещает свои результаты в asp: repeater, который находится внутри панели обновления, и магия Ajax извлекает мне набор результатов. Я говорю все это, потому что, хотя это работает, и я могу видеть результаты, которые я должен, я не вижу ничего этого в исходном коде страницы. И я имею в виду "любой из этих вещей". Я вижу строку заголовка таблицы, но ничего не вижу в теле; ни данные, ни разметка вокруг него. Разметка, которую генерирует Ironspeed, может быть любезно описана как крушение поезда, и это то, что я могу видеть (этого достаточно, чтобы отвезти человека в MVC, говорю вам).

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

Ответы [ 5 ]

2 голосов
/ 16 декабря 2009

При использовании jquery селекторы работают так же, как в css. Если вы хотите выделить все абзацы, вы можете просто сказать

$("p").do somthing

Они, конечно, могут быть намного сложнее, а также добавлять классы, имена и т. Д., А также несколько дополнительных специфичных для jquery селекторов. Вы можете прочитать больше о селекторах на их странице API .

выберите элемент формы с именем hello

$("input[name=hello]").do something

или класс привет

$(".hello").do something

Если вы хотите навести курсор мыши, вы можете сделать что-то вроде этого.

$(".hello").mouseover(function(){
  //do something
}).mouseout(function(){
  //do something
});

обновление:

с помощью панели инструментов веб-разработчика Firefox вы можете просмотреть сгенерированный источник. Это добавит весь источник, созданный поисковым аддоном. Это поможет вам правильно выбрать img.

2 голосов
/ 16 декабря 2009

Есть много способов выбора элементов. Вместо того, чтобы дать вам исчерпывающий список примеров, я бы пригласил вас посетить страницу jQuery Selectors .

0 голосов
/ 17 декабря 2009

Мне кажется, что вы просматриваете View Source в своем веб-браузере и, поскольку контент загружается через AJAX с использованием UpdatePanel, загружаемый контент не является частью исходного источника, отправляемого в ваш браузер. следовательно, вы не видите его в статическом HTML-источнике.

Прежде всего, вам нужно получить инструмент, который позволит вам проверить работоспособность DOM, что-то вроде Firebug для Firefox, IE Developer Toolbar для Internet Explorer или Инструменты разработчика Webkit в Google Chrome или Safari. Тогда вы сможете увидеть идентификатор любого элемента, который загружен через AJAX, и, таким образом, использовать простой селектор jQuery, чтобы получить его

$('#myElement').doSomething();

Обновление:

Если это изображение, вы можете попробовать использовать атрибуты, которые вы видите при щелчке правой кнопкой мыши, и просмотреть его свойства в селекторе, используя атрибуты селектора . Обратите внимание, что это не будет самый быстрый способ получить элемент, и вам все равно будет лучше пройти проверку DOM, чтобы найти маршрут id. Но что-то вроде следующего должно работать

$('img[alt="alt text"][src="http://thesource.com"]').doSomething();
0 голосов
/ 16 декабря 2009

Имейте в виду, что с jQuery вам не нужно присваивать события (например, наведение мыши) отдельным элементам.

Если я хочу дать каждому элементу класса foo событие mouseover, я могу просто сделать это:

$('.foo').mouseover(function(event)
{
    alert('Mouse over!');
});

, а затем в любое время любой элемент класса foo на странице будет при наведении мыши, этот обратный вызов сработает (с this, ссылающимся на конкретный объект в обратном вызове, как обычно в Javascript обработка событий).

0 голосов
/ 16 декабря 2009

Определенно. Если вы знаете положение элемента по отношению к другим элементам, то вы можете придумать какой-то уникальный набор характеристик DOM, который бы его идентифицировал.

Например, если вы знаете, что ваш элемент всегда будет первым div, найденным внутри div с классом "xyz", вы можете выбрать его как:

$('div.xyz div:first-child')

Весь DOM - твоя устрица.

Лучше использовать идентификаторы, когда это возможно, потому что, если структура вашего DOM изменится в будущем, это может сломать ваши селекторы. Но это обычная практика для обработки безымянных элементов, особенно если они динамические.

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