Простой jQuery, но не могу заставить его работать

#javascript #jquery

#javascript #jquery

Вопрос:

Итак, следующий код:

 $product_id = $(this).parent().parent().html();
  

Выдает это:

 <div class="right">
   <input value="6" name="quantity" id="" maxlength="2" type="text">
   <label> Places required</label>
   <p class="btn update">Update</p>
   <input name="product_id" value="2" class="product_id" type="hidden">
   <p class="btn remove">Remove from basket</p>
</div>
<a href="/product//"><img src="http://dummyimage.com/100x100/333/eee" alt="" class="border-thick shadow"></a>
<div class="left">
   <h5>Title</h5>
   <select name="courses_details_id">
      <option value="">Select date/venue...</option>
      <option value="6">10 Oct 2011 - Chicago, USA</option>
      <option value="4">13 Oct 2011 - Hastings</option>
      <option value="2">18 Nov 2011 - Paris, France</option>
   </select>
   <br>
   <p class="price"><span class="small">From</span> £77.88</p>
</div>
  

И я просто хочу получить значение для product_id, так что это имеет смысл:

 $('#basket li form select[name=courses_details_id]').change( function(){    
    $(this).parent().parent().children("input[name$=product_id]").val();
});
  

но он возвращает значение undefined

Комментарии:

1. Попробуйте использовать .find вместо .children ?

2. ввод [name $=product_id] удалить $

3. Ха-ха, спасибо, я никогда не знал о функции «найти»!

Ответ №1:

Разве вы не можете просто сделать

 $(this).find("input[name='product_id']").val();
  

Ответ №2:

В вашем селекторе отсутствуют кавычки, это должно быть так

 $('input[name$="product_id"]')
  

Ответ №3:

Упростите разметку. Сделайте так, чтобы выбранный элемент выглядел следующим образом

 <select name="course_details_id" id="course_details"/>
  

Затем, чтобы получить значение, это простой вопрос:

 $("#course_details").change(function() {
   var product = $(this).val();
});
  

Комментарии:

1. Всегда полезно, чтобы атрибуты name и id были идентичными в полях формы. Позволяет избежать возможной путаницы.