2013-07-16 2 views
1

Мне нужно взять значение данных из изображения и поместить его в скрытые поля, не используя идентификатор скрытого поля.
Редактировать: я не могу использовать идентификаторы, потому что набор повторяется с другим идентификатором.Попытка выбрать скрытое поле в родительском DOM с jQuery

<div class="optionImageSelection"> 
    <input type="hidden" id="hdnIn"> 
    <ul> 
     <li> 
      <img src="iamge1.jpg" data-value="val1" class="optionImageSelect"> 
     </li> 
     <li> 
      <img src="image2.png" data-value="val2" class="optionImageSelect"> 
     </li> 
    </ul> 
    </div> 
     <div class="optionImageSelection"> 
<input type="hidden" id="hdnIn2"> 
<ul> 
    <li> 
     <img src="iamge3.jpg" data-value="val3" class="optionImageSelect"> 
    </li> 
    <li> 
     <img src="image4.png" data-value="val4" class="optionImageSelect"> 
    </li> 
</ul> 
</div> 

JQuery:

function OptionImage(image) { 
    this.selectImage = function() { 

     //this works but it needs to be generic. 
     var hdnSelector = $("#hdnIn");  
     //this doesn't work but it's what I need 
     //var hdnSelector = $(image).parents('input:hidden:first'); 
     $(hdnSelector).val($(image).attr("data-value")); 
     alert($(hdnSelector).val()); 

    }; 

}

$(document).ready(function() { 
    $(".optionImageSelect").click(function() { 
     var oi = new OptionImage($(this)); 
     oi.selectImage(); 
    }); 

});

Js скрипка: http://jsfiddle.net/p4pMg/1/

Спасибо.

+0

Поскольку вы используете атрибуты 'data-', почему бы просто не добавить атрибут 'data-id' к изображениям, которые нацелены на скрытое поле? '$ ($ (изображение) .attr (" data-id ")). val ($ (image) .attr (" data-value "));' –

+0

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

+0

Спасибо Crazy train, этот подход будет работать и быть более независимым от html. – vts

ответ

1

Вместо

var hdnSelector = $("#hdnIn"); 

вы можете использовать этот селектор

var hdnSelector = $(image).closest('ul').prev('input') 

Вы можете использовать комбинацию closest и prev

Check Fiddle

+0

работает хорошо, спасибо! – vts

+0

@vts .. Рад помочь ... –

0

Используйте $('input[type=hidden]') селектор.

+0

Это не сработает, если на странице есть несколько скрытых полей. –

+0

@ Sushanth-- Конечно! Но условие не указано :) – RomanGorbatko

+0

@ Sushanth-- Ohh ... Условие изменилось. Ваш метод очень хорош. – RomanGorbatko

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