给出一系列具有唯一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
答案 0 :(得分:1)
您应该可以通过向模式后面的按钮添加单击事件来完成此操作。在下面的示例中,我只使用了:button
selector,但您可能希望根据自己的需要对其进行修改,也许您可以捎带它已经调用的processMe()
函数。
此外,您可能需要使用siblings()
或prevAll()
代替prev()
,具体取决于具体布局。
$(document).ready(function(){
$(":button").click(function(){
$("input[name='logo']").val($(this).prev(".logo").text());
});
});
的示例
$(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在技术上是无效的:)