私はこの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 を 2 回呼び出すと:
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();
}
}
.. うまくいきません。私は問題を見ていない、あなたの誰かを見ていますか?
:: 何か魔法ってありますよね?