我必须从jquery的.html()中删除一个特定元素(带#add_phone的按钮)。
所以这就是事情。首先是字段(电话号码)+选择(电话类型)+按钮(#add_phone),并且所有三个都作为容器包含在div中。当我单击按钮时,它将通过.html()重新创建。 JS如下:
$('#add_phone').click(function() {
$('div.multiple_number:last').after('<div id="phone_div_id' + phone_div_id + '" class="multiple_number">'+ $('div.multiple_number').html() +'</div>');
...
//append a remove [-] button, etc...
});
这里是html:
<div class="multiple_number" id="phone_div_id0">
<label>Phone Number(s):</label>
<input name="phone" id="phone[]" placeholder="Phone Number"/>
<select name="phone_type[]" id="phone_type">
<option value="1">Mobile</option>
<option value="2">Home</option>
<option Value="3">Office</option>
<option Value="3">Fax</option>
</select>
<input type="button" name="add_phone" class="add_phone_class" id="add_phone" value="ADD MORE" />
</div>
因此,实际上,我正在为表单创建多个电话号码。但是,这就是问题所在。里面是输入类型=&#34;按钮&#34; (#add_phone
按钮)。我想将它从.html()中排除。
我尝试过:
$('div.multiple_number:not(#add_phone)').html()
$('div.multiple_number:not(input#add_phone)').html()
$('div.multiple_number:not(#add_phone)').not(#add_phone).html()
$('div.multiple_number:not(#add_phone)').not(input#add_phone).html()
和类名对应而不是使用id名称。出于美学原因,我也不想将#add_phone按钮放在div之外。
答案 0 :(得分:1)
我有点不清楚你在寻找什么,但我认为当点击#add_phone
按钮时,你希望表单被复制并添加到它下面,但{ {1}}按钮本身。
取消该假设,以下内容应该有效
#add_phone
这是一个live jsfiddle demo来展示它的工作原理。
由于某些原因,您最初的尝试无效。主要的是$('#add_phone').click(function() {
var numberForms = $('div.multiple_number');
var newNumberForm = numberForms.eq(0).clone(true);
newNumberForm.find('#add_phone').remove();
newNumberForm.attr('id', 'phone_div_id' + numberForms.length);
numberForms.last().after(newNumberForm);
});
选择器和:not()
()方法仅对所选元素进行操作。它不会根据子元素进行过滤。这些方法仅在您选择.not
的元素也具有ID <div class="multiple_number" />
的情况下才有效。
此外,建议不要使用add_phone
作为克隆方法。使用字符串操作作为直接DOM操作的替代方法可能会在以后引起问题。使用.html()
将强制您必须将事件处理程序重新绑定到新创建的DOM元素。我上面提供的策略应该更具有前瞻性,因为它还将克隆任何被复制元素的事件处理程序。在某些情况下,某些浏览器在调用.html()
时不会完全复制原始元素,这是避免它的另一个原因,除非您有特定的理由将DOM元素序列化为字符串。
答案 1 :(得分:0)
请改为尝试:
var innerHTML = $("div.multiple_number").html()
.replace($("div.multiple_number input#add_phone").html(), "");
祝你好运