根据父div的子项设置输入值

时间:2010-10-01 17:47:36

标签: javascript jquery

给出一系列具有唯一ID的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 进行评估。

THX

4 个答案:

答案 0 :(得分: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());
    });
});

答案 1 :(得分:1)

我喜欢使用jQuery的上下文功能,例如:

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

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

答案 2 :(得分: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.

答案 3 :(得分:0)

我的解决方案:

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

哦......作为旁注,从数字开始的元素ID在技术上是无效的:)