为什么.replaceWith()
在以下代码中不起作用?
单击单选按钮后,<form>
之间的HTML将被删除。
$('input:radio').click( function(){
var url = $(this).attr('alt');
$('form').replaceWith($('<form action="'+url+'" method="post" class="url">' + this.innerHTML + '</form>'));
});
答案 0 :(得分:3)
我认为您尝试执行的操作是在单击单选按钮时更改action
属性的值。
replaceWith
替换整个元素(以及它的子元素),这就是整个表单被替换的原因(空表格)。
相反,您可以使用attr
更改单个属性的值:
$('input:radio').click(function() {
var url = $(this).attr('alt');
$('form').attr("action", url);
});
答案 1 :(得分:0)
input[type=radio]
没有任何innerHTML
。另一方面, 表单 可以。
但是,我认为你需要这样的代码:
$('input:radio').click( function(){
var url = $(this).attr('alt');
$(this).closest('form').attr('action', url); // Target the form for this input, rather than the first form in the document ($('form')).
});
查看工作小提琴:http://jsfiddle.net/MWFN9/2/,并查看attr()方法的文档。
答案 2 :(得分:0)
this
引用input
元素。因此this.innerHTML
为空。您将重新创建没有内容的表单。