2010-10-01 2 views
0

Данной серии DIVs ж/уникальный идентификатор, как в:входных значений устанавливаются в соответствии с детьми родительского DIV

<div id="2988"> 
    <div class="site">YaHoot.com</div> 
    <div class="logo">/images/yahootLogo.jpg</div> 
//[and so on] 
    <input type="button" value="YaHoot" onclick="javascript:processMe('2988');" /> 
</div> 

//[followed by bunches more divs repeating that structure] 

Я пытаюсь написать код обработчика щелчка, который может отображать скрытые поля одной из форм с содержимым каждого из дочерних DIV.

Другими словами, форма имеет скрытое поле:

<input type="hidden" name="logo"> 

, которые должны быть оценены с /images/yahootLogo.jpg, когда данная кнопка нажата.

ТНХ

ответ

1

Я хотел бы использовать функцию контекстного JQuery для этого, как:

function processMe(id){ 
    var logo = $(".logo", "#"+id).text(); 

    $("input[name='logo']").val(logo); 
} 
1

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

Также вам может потребоваться использовать siblings() или prevAll() вместо prev() в зависимости от точной компоновки.

$(document).ready(function(){ 
    $(":button").click(function(){ 
     $("input[name='logo']").val($(this).prev(".logo").text()); 
    }); 
}); 

Пример с prevAll()

$(document).ready(function(){ 
    $(":button").click(function(){ 
     $("input[name='logo']").val($(this).prevAll(".logo").text()); 
    }); 
}); 
0

Попробуйте это -

<div id="2988"> 
    <div class="site">YaHoot.com</div> 
    <div class="logo">/images/yahootLogo.jpg</div> 
//[and so on] 
    <input type="button" value="YaHoot" onclick="javascript:processMe(this);" /> 
</div> 


<script type="text/javascript"> 

function processMe(id){ 
$(id).siblings().each(function(){ 
var class = $(this).attr('class'); 
$('input[name='+class+']').val($(this).val()); 
}); 
} 
</script> 

The above code will replace the values of all the div's with same parent in to the 
hidden fields with class name equal to the individual div's class name. 
0

Мое решение:

$(function() { 
    $("#2988 div").each(function() { 
     $(this).parent().append('<input type="hidden" name="'+$(this).attr("class")+'" value="'+$(this).text()+'" />'); 
    }); 
}); 

... О, как заметка на полях, идентификаторы элементов, начинающиеся с цифр являются технически недействительными :)

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