2012-01-23 3 views
2

Я хотел бы выбрать все пользовательские кнопки jquery, которые живут внутри всех <div> s, которые относятся к классу .view. Имея это в виду, я написал следующие фрагменты кода, ни один из которых не делает то, что я хочу.Почему этот селектор не работает?

Что я хочу, как я сказал, чтобы вернуть все элементы, класс .ui-button, которые живут внутри элемента, класс .view.

$(".view").find('.ui-button').each(function(index){ 
     console.log(index); 
    }) 

    $(".view .ui-button").each(function(index){ 
     console.log(index); 
    }) 

    $(".view > .ui-button").each(function(index){ 
     console.log(index); 
    }); 

Я взял скриншот, чтобы вы, ребята, можете видеть, что есть на самом деле JqueryUI кнопки, живущие внутри этого <div>. http://imgur.com/yDlw0

Спасибо заранее.

EDIT

Я никогда попытался толкая в том числе сценария в последнюю очередь перед закрытием тега .. еще ничего ...

Тогда я попробовал что-то, что я обычно делаю при работе с асинхронные запросы (есть ли здесь случай?). обертывание всего в вызове setTimeout с задержкой 500 мс .. Это сработало.

Имеет ли это смысл?

+1

* «... ни один из которых не делает то, что я хочу». * Можете ли вы уточнить, чего вы ожидаете? Селекторы отлично смотрятся на меня. –

+2

Работает в упрощенном примере: http://jsfiddle.net/G7eRX/ – Jamiec

+0

Я вижу. Любая идея, почему это не работает для меня? –

ответ

3

Я подозреваю, что это вызвано тем, что вы вызываете функцию button() jQueryUI, который добавляет класс ui-button к элементу после запуска вашего селектора.

См. Пример this, в котором показано, что это, по крайней мере, возможно.

Решение состоит в том, чтобы убедиться, что вы вызываете button, прежде чем пытаться манипулировать с помощью класса ui-button или использовать какой-либо другой класс для идентификации элементов, которые вы пытаетесь выбрать. Второй момент - важный. вы должны иметь еще один класс для этих элементов, чтобы вы могли выбрать их для применения функции button().

+0

Уже нажал на скрипт, включенный в последнюю вещь до .. Все еще ничего , –

+0

@Felipe, если код, который вызывает 'button()', находится в обработчике 'ready', вы должны убедиться, что код в вашем вопросе также находится в обработчике' ready' (либо тот же, либо другой). В противном случае он будет выполняться перед вызовами 'button()', даже если он расположен ниже всех других скриптов на странице. –

+0

Да. Оба находятся в готовом обработчике. Я думаю. –

1

Когда выполняется ваш скрипт? Скорее всего, вы включили его перед библиотекой jQueryUI, которая заставит вас искать классы до их добавления.

Как правило, пользовательские JavaScript файлы и скрипты должны быть размещены в самом низу, прямо перед закрытием </body>

+0

В частности, только «отложенные сценарии» должны быть размещены на '' –

Смежные вопросы