#javascript #jquery #asp.net #jquery-ui
#javascript #jquery #asp.net #jquery-пользовательский интерфейс
Вопрос:
у меня есть диалоговое окно jquery, которое определено следующим образом (часть кода, показанная здесь)
buttons: {
"Opslaan": function() {
Opslaan();
$(this).dialog("close");
},
"Annuleren": function() {
$(this).dialog("close");
}
}
Opslaan()
Функция De определяется с пустым телом ( function Opslaan(){}
).
Теперь диалоговое окно открывается из разных мест, поэтому я хочу, чтобы при открытии диалогового окна определялось тело Opslaan()
метода, потому что он должен сохранять данные в диалоговом окне, но они вводятся в этих разных местах, поэтому метод Opslaan (Save) должен все время отличаться.
Одна вещь, о которой я подумал, это передать фактический метод в диалоговое окно при его открытии (таким образом, заменить статический opslaan();
вызов переданным методом), но я не знаю, возможно ли это
Итак, в псевдокоде, когда пользователь нажимает кнопку
- получить html для диалога
- переопределите метод A (поместите правильный javascript в тело или позвольте методу Opslaan указывать на метод OpslaanA()
- открыть диалоговое окно
Комментарии:
1. что делает ` body (функция Opslaan(){})`?
2. в диалоговое окно вводится несколько текстовых полей. Диалоговое окно используется для 4 разных маленьких crud-экранов. Затем, когда пользователь нажимает Opslaan (означает «сохранить»), он должен вызвать правильный метод сохранения, чтобы проанализировать введенный html, потому что html отличается во всех 4 случаях. Таким образом, метод Opslaan просматривает HTML-код в диалоговом окне и получает значения из текстовых полей и создает для него вызов веб-службы. Итак, когда вы нажимаете кнопку ‘Opslaan’, я хочу вызвать разные реализации этого метода в зависимости от введенного html в диалоговом окне. Это отвечает на ваш вопрос?
3. хорошо, я думаю, у вас есть 4 разных метода opslaan на каждой странице, верно? у этого разные инструкции? в таком случае проверьте это окно. Opslaan существует первым или что он находится в вашем dom до того, как пользователь должен нажать кнопку, я не знаю, почему вы не можете использовать
serialize()
метод для передачи ваших post / get данных, надеюсь, это поможет, если нет, разместите несколько примеров кодов для каждой страницы или как это работает в кодах 🙂
Ответ №1:
Передача уникальной функции в качестве аргумента для универсальной функции — отличный способ справиться с этим. Вот простая демонстрация:
var save = function(saveFunction) {
saveFunction();
// common code
alert('common code');
}
var aSaveFunction = function() {
alert('aSaveFunction Called.');
};
$('#one').click(function() {
save(aSaveFunction);
});
var aDifferentSaveFunction = function() {
alert('aDifferentSaveFunction Called.');
};
$('#two').click(function() {
save(aDifferentSaveFunction);
});
Или посмотреть на скрипку в действии: http://jsfiddle.net/peteorpeter/7H3mm/3 /
Кроме того, для получения дополнительной информации о функциях javascript как объектах: http://www.sergiopereira.com/articles/advjs.html , ищите: «Что вы имеете в виду? Функция тоже является объектом?».