Динамическая сгенерированная кнопка ввода иногда вызывает функцию (функция представлена на той же странице, вне $(document).ready()
), но иногда давая Typeerror
, что функции нет.
В shiftRight()
, я создаю кнопку shiftLeftButton
и нажимаю, я вызываю функцию shiftLeft()
с аргументом. shiftLeftButtons
более чем один. Иногда shiftLeftButton
вызывает функцию с некоторыми аргументами, но иногда нет.Динамическая сгенерированная кнопка ввода не вызывающая функция каждый раз
Я попытался отладить это и искал эту проблему, но не получал решения.
function shiftRight(leftButtonNo) {
//Creating a hidden field in the form
if(!$("#innerQuestionListDiv"+leftButtonNo).doesExist()){
if(!$("#clonedDiv"+leftButtonNo).doesExist()){
$('#TestSetFormId').append('<input type="hidden" name="questionIdsForTestSet" value="'+ leftButtonNo+'" id="questionIdForTestSet'+ leftButtonNo+'" />');
***//Creating shift left button
var $shiftLeftButton= $('<input/>').attr({
type: 'button', name:'shiftLeft',
id:'shiftLeftId'+leftButtonNo ,
value:'<--'+leftButtonNo+'',
onclick:'shiftLeft('+leftButtonNo+')'
});***
//Getting clone of the div
$cloneQuestionDiv=$("#div"+leftButtonNo).clone();
***//Appending it to a cloned div
$cloneQuestionDiv.append($shiftLeftButton);***
$cloneQuestionDiv.attr('id', 'clonedDiv'+leftButtonNo);
$cloneQuestionDiv.prependTo('#existingQuestionDiv');
$("#list"+leftButtonNo).hide();
}else{
alert("You already added this question");
$("#list"+leftButtonNo).hide();
}
}else{
alert("Question already exist into the Test Set");
$("#list"+leftButtonNo).hide();
return;
}
}
*function shiftLeft(rightButtonNo){
//Removing hidden field in the form
$("#questionIdForTestSet"+rightButtonNo).remove();
$("#clonedDiv"+rightButtonNo).remove();
if($("#list"+rightButtonNo).doesExist()){
$("#list"+rightButtonNo).show();
}
$(this).hide();
}*
Вы пытались добавить обработчик с помощью JQuery '.На)' функцию (а не пытаться установить onclick' атрибут '? Я предполагаю, что браузер устанавливает атрибут, но не «компилирует» его. – CodingGorilla
.on() работает в document.ready(), я пытался, но контент поступает из вызова ajax. Я изменил свою логику. Вместо того, чтобы делать это на стороне клиента, я делаю это со стороны сервера. Он работает нормально. Спасибо за ваш комментарий. –