jQuery - 在保持子项不变的同时替换元素代码

时间:2013-07-03 08:32:11

标签: jquery replacewith

无法找到足够接近我想要的东西,我可以为我的具体问题工作,所以这里有:

我有一个选择按钮,我需要更改页面加载后的onchange参数,并在它之前添加一个表单元素。这是HTML:

<select name="dnn$ctr2027$Fixture$ddlRounds" onchange="javascript:setTimeout('__doPostBack(\'dnn$ctr2027$Fixture$ddlRounds\',\'\')', 0)" id="dnn_ctr2027_Fixture_ddlRounds"><option value="">---All Rounds---</option>
<option selected value="337"></option>
<option value="353">Round 2</option>
<option value="354">Round 3</option>
<option value="338">Round 4</option>
<option value="348">Round 5</option>
etc
etc.....
</select>

到目前为止,我已经设法制作了我发现的其他答案的片段:

var divToRemove = jQuery('#dnn_ctr2027_Fixture_ddlRounds');
var children = elToRemove.children().detach();
divToRemove.replaceWith('<form name="roundSelect" action="#tround" method="get"><select name="dnn$ctr2027$Fixture$ddlRounds" onchange="document.roundSelect.submit();" id="dnn_ctr2027_Fixture_ddlRounds">').append(children);

这可以替换选择数据并在其前面添加表单,但它不会给我子选项元素,而是留下一个空白的选择字段。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用.wrap().attr()来更改onchange值/使用.change()事件处理程序进行jQuery-ish solotion

$('#dnn_ctr2027_Fixture_ddlRounds').attr('onchange', 'document.roundSelect.submit();').wrap('<form name="roundSelect" action="#tround" method="get"/>');

或更好

$('#dnn_ctr2027_Fixture_ddlRounds').change(function(){
    document.roundSelect.submit();
}).wrap('<form name="roundSelect" action="#tround" method="get"/>');

演示:Fiddle