2010-10-01 45 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在技術上是無效:)