2010-10-01 48 views
0

给出一系列的DIV W /唯一ID为:组输入值

<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

回答

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()+'" />'); 
    }); 
}); 

哦......作为一个旁注,以数字开头元素ID在技术上是无效:)