Я только что узнал jQuery за последние два дня, так что я немного новичок в этом.jQuery селекторы, являющиеся темпераментными
Я пытаюсь создать простую навигационную панель. Я построил столбцы в виде таблиц, и когда пользователь перешел через определенную ячейку, эта ячейка загорается, а рядом с исходной панелью появляется еще одна вспомогательная навигационная панель.
Оригинальная панель появляется сразу под заголовком. Таким образом, синтаксис, который я использовал, был:
var headerHeight = $('#headerTable').height();
$('#selectStart').offset({left: 0, top: headerHeight});
....
<table id="selectStart" class="selector1">
<tr><td id="sel1Projects" class="selector1">
....
До сих пор так хорошо. Теперь я хочу сделать так, чтобы, когда пользователь нажимает на a в этой таблице, соответствующая суб-навигационная панель появляется сразу справа от первой навигационной панели. Поэтому я написал две новые таблицы для тестирования:
<table id="selectProjects" id="table2" class="selector2" class="table2">
<tr><td id="sel2Project1" class="selector2">
....
<table id="selectDevelopment" id="table2" class="selector2" class="table2">
<tr><td id="sel2Dev1" class="selector2">
Но селекторами для них являются настоящая боль в шее. Когда я только что делаю
var select1Width = $('#selectStart').width();
$('#selectProjects').offset({left: select1Width, top: headerHeight});
$('#selectDevelopment').offset({left: select1Width, top: headerHeight});
Он отлично работает; однако это не очень хорошее кодирование. Я должен группировать все похожие таблицы, чтобы я мог размещать их одинаково, а затем показывать только тот, который я хочу, чтобы пользователь видел в то время.
$('.selector2').offset(...)
работает отлично, насколько выбрать все таблицы, но и ставит все с в том же месте, так как все они имеют один и тот же класс для целей моделирования. Пока, однако, это все, чего я ожидал.
$('.selector2 table').offset(...)
Я ожидал, что это просто выберет таблицы в этом классе. Он ничего не делал. Есть ли проблема с тем, как я ее печатаю? После некоторого разочарования я добавил второй класс «table2» к каждому из них.
$('#table2').offset(...)
Все еще ничего. Поэтому я добавил новый класс для них
$('.table2').offset(...)
Ничего; однако, используя другой класс, который они разделяют, selector2, работает. И это не может быть проблемой, когда вам не нужно выбирать таблицы, потому что, когда я выбирал таблицы отдельно, я получил желаемый результат.
Так что я делаю неправильно и что я не понимаю?
Я не совсем понимаю ваш вопрос. Возможно вам это нужно: $ ("# selectProjects # sel2Project1")? Обратите внимание, что вы не должны использовать один и тот же идентификатор для нескольких элементов. – Fenec
Нет, я не пытаюсь выбрать элементы
Я замечаю, что ваши таблицы имеют два атрибута 'class'. Я не думаю, что это действительно так. Если вы хотите добавить дополнительный класс, добавьте его в существующий атрибут 'class', но отделите его от предыдущего с пробелом. – BoltClock
ответ
Вместо $ ('selector2 стол'). Смещение (...)
попробовать этот
$ ('table.selector2'). Offset (...)
источник
2011-12-26 16:43:56 Pavan
Спасибо! Это сработало. Так что же случилось с тем, что я пытался раньше? –
'' '.selector2 table''' дает вам дочерние элементы с классом selector2, которые являются таблицами. '' 'table.selector2''' дает вам таблицы, которые имеют класс selector2. –
Вы косяк повторить идентификатор для JQuery ... увидеть, если изменить его решит вашу Prob
источник
2011-12-26 16:43:02 Toping
Удаление идентификатора «table2» из них ничего не делало. –
как насчет объединения классов? – Toping
Смежные вопросы