我有这个 HTML5 代码(例如):
<form id="peopleFormView">
<input type="checkbox" name="name1" value="5" />
<input type="checkbox" name="name3" value="2" />
<input type="checkbox" name="name4" value="3" />
</form>
<table id="domain5">
<tbody></tbody>
</table>
这段代码是用 JS 处理的:
$(function(){
registerPerformersClickHandler();
});
function registerPerformersClickHandler(){
$('#peopleFormView input').click(function(){
var IdPerson = $(this).val();
if ($('#performer'+IdPerson).length == 0){
performer.add(IdPerson);
}
else{
performer.del(IdPerson);
}
});
var performer = {
del: function(IdPerson){
$('#performer'+IdPerson).remove();
}
}
识别元素存在 $('#performer'+IdPerson).length == 0 工作正常,但是当添加元素时
<tr id="performer5">
<td>Surname name</td>
</tr>
然后我再次单击相同的输入,JS 正确调用了 performer.del(),但什么也没发生,没有错误,没有反应。如果我像这样调用 remove 两次:
var performer = {
add: function(IdPerson){
var requestData = {
className : 'Performer',
method : 'getPerformerRowView',
params : IdPerson
};
$.post(openAjaxLoader, requestData)
.success(function(data){
orchestraDomain.addPerformerToDomain(data.IdDomain, data.performer);
})
.error(function(data){
window.alert(data.error);
})
}
,
del: function(IdPerson){
alert( $('[id=performer'+IdPerson+']').length );
$('#performer'+IdPerson).remove();
$('#performer'+IdPerson).remove();
}
}
var orchestraDomain = {
addPerformerToDomain: function(IdDomain, performer){
$('#domain'+IdDomain+' tbody').append(performer);
}
}
.. 有用。如果通话是这样的
var performer = {
del: function(IdPerson){
$('#performer'+IdPerson).remove().remove();
}
}
..它不起作用。我没有看到问题,看到你的人吗?
:: 有什么魔法,你不觉得吗?