2013-06-19 2 views
0

У меня есть мобильный сайт jquery, который имеет динамический неупорядоченный список, сгенерированный из команды postgres и while в php.Прокрутка списка и скрыть дочерний li на основе оператора if

После страницы готов, как я могу пройти через каждый блок список и читать текст Thats в span class="status" и если оно равно «D», то скрыть, связанный class='edit_btn' в контекстном меню.

Я понимаю, что это может быть выполнено в jQuery?

См. Мой пример, который поможет объяснить мой вопрос. http://jsfiddle.net/jamesil/wbcVy/1/

Это то, что я сделал до сих пор, но поверьте Im движется в неверном направлении

$('ul.bookings li').each(function() { 
$(this).each(function(i) { 
    var status = $('span.status',this).text(); 
    if (status = 'D') 
     $('ul.bookings ul li.edit_btn').hide(); 
}); 
+0

HTML, в вашей скрипкой неверен - вы закрываете свой Ли, прежде чем добавить DIV и кнопки к нему, чтобы ваш DIV с кнопками не является частью от li со статусом в нем – Pete

+0

Мне известно об этом. Но это единственный способ, которым я знаю, как это сделать в то время как команда, так как мне нужен тег ul за пределами оператора while, а div должен быть внутри, но он работает, тем не менее. – Jamesil

+1

это все еще недействительный html, поскольку у вас есть div как ребенок ul – Pete

ответ

1

Если исправить недопустимый проблему HTML, как описано в this fiddle вы можете использовать следующую JQuery, чтобы скрыть ваш кнопка редактирования:

$('#bookings li').filter(function() { 
    return $(this).find('span.status').text() == 'D'; 
}).find('div').each(function() { 
    //this is the bit where you need to find the id from the comment inserted by mobile jquery 
    var divId = '#' + this.innerHTML.replace(/[^0-9]+/g, '') + '-popup'; 
    $(divId).find('li.edit_btn').hide(); 
}); 

Обратите внимание, что это предполагает, что в вашем листе есть только один div. Вы можете дать этому div класс, чтобы вы могли сделать лучший селектор в поиске, но я не уверен, что jQuery mobile удалит класс, поскольку он, кажется, удалил исходный идентификатор.

Если вы не в состоянии изменить HTML структуру, то просто изменить .find к .next

Example

+0

Привет, Пит, Thats awesome, именно то, что я хотел. Теперь im использует тот же скрипт для разных букв, но другие буквы возвращаются с пробелом после буквы eg. «D» Как я могу сказать вашей функции, чтобы забыть о пространстве после письма? – Jamesil

+0

@Jamesil просто добавляет '.trim()' - '$ (this) .find ('span.status'). Text(). Trim()' – Pete

+0

Последнее. Мне нужна другая функция, подобная той, которую вы написали, но вместо «.find ('span.status'). Text(). Trim() == 'W'; ' могу ли я включить заявление IF? http://jsfiddle.net/jamesil/wbcVy/4/ – Jamesil

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