2013-05-18 2 views
1

У меня есть структура уль> Li с помощью JQuery Mobile, который выглядит следующим образом:JQuery выбрать один элемент из Li, используя имя класса

<div> 
<ul data-role="listview"> 
    <li><a href="#" class="FoodDrinkItem">Hamburger<p class="FoodDrinkPrice">$9.00</p></a></li> 
    <li> <a href="#" class="FoodDrinkItem">Club Sandwich<p class="FoodDrinkPrice">$7.00</p></a></li> 
</ul> 
</div> 

Я хочу, чтобы получить цену товара, когда я нажимаю на конкретный Ли. Я хотел бы сделать это с помощью классов, потому что его легче расширять впоследствии.

$(document).ready(function(){ 
    $(".FoodDrinkItem").click(function(){ 
     var price = $(".FoodDrinkPrice").text(); 
     $("#PopupFoodDrinkPrice").text(price); 
    }); 
}); 

Как я могу взять className.text() из выбранного LI?

ответ

2

Рабочий пример: http://jsfiddle.net/Gajotres/VWkm9/

$(document).on('click', 'ul li', function(){ 
    alert($(this).find('.FoodDrinkPrice').text()); 
});  

И у вас есть 2 ошибки в вашей структуре:

Это:

<div data-role="listview"> 
<ul> 

Должно быть так:

<div> 
<ul data-role="listview"> 

data-role="listview" должны быть размещены внутри ul тега, без него listview не будет должным образом оформлены.

И ваш тэг p неправильно закрыт.

+0

Это, кажется, работает отлично. Но почему? '$ (This)' означает выбранный элемент, который я прошу? Любые хорошие ссылки для изучения jQmobile будут оценены. Я правильно поставил вопрос, как только смогу. – Leonidas

+0

$ (this) (или self) - это ключевое слово, которое может использоваться в методах экземпляра для ссылки на объект, на который был вызван текущий исполняемый метод. Чтобы узнать больше, взгляните на эту ссылку: http://remysharp.com/2007/04/12/jquerys-this-demystified/. Теперь о ссылках, ваше BEST-решение в настоящее время является официальной документацией jQM здесь: http://view.jquerymobile.com/1.3.0/ и api здесь: http://api.jquerymobile.com/, все остальное фрагментировано. Также взгляните на мой профиль и мои ответы, я отвечу в основном на вопросы jQM, поэтому есть хороший шанс, что вы найдете там свой ответ. :) – Gajotres

+0

Также я бы посоветовал вам взглянуть на два моих других ответа. Сначала рассказывается о том, почему вы не должны использовать документ с jQuery Mobile и что такое надлежащая замена: http://stackoverflow.com/a/14469041/1848600. Во-вторых, речь идет о виджетах jQM и их динамическом использовании: http://stackoverflow.com/a/14550417/1848600 – Gajotres

0

Вы ссылаетесь на несуществующий класс под названием .price в вашем коде. Вы должны дать каждому <li> уникальный идентификатор и ссылаться на него.

2

Если я вас правильно понял, это будет делать трюк:

$(this).find(".FoodDrinkPrice").text() 
+0

Это тоже может работать, но я не уверен, что мы видим весь код. –

+0

Но я не хочу текст() всего li.Just .FoodDrinkPrice.text() конкретного li.FoodDrinkItem – Leonidas

+0

Вы заметили мое редактирование? Находящий вызов будет искать цену в соответствующих дебатах ли. – milosz

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