Я пытаюсь динамически вставлять функцию jQuery в элемент. Я делаю это динамически, потому что параметры функции могут меняться.Вставка функции jQuery с динамическими значениями параметров
Как вы можете видеть values
, min
, max
свойства, а также параметры функции, присоединенные к событию stop
и slide
являются динамическими. Поэтому я думал, что я бы ввел всю функцию динамически, в настоящее время я вставляю ее как строку, которая, очевидно, просто вставляет текст и не работает код.
$.ajax({
type: "GET",
url: "/service.svc/getshopitems/?newurl=" + parseCorrectURL(newURL),
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//here I'm setting all variables that are used as values in the function to be inserted
$('.left_nav').append('$(function() {$("#slider_pricefilter").slider({range: true,values: [' + pricemin_query + ', ' + pricemax_query + '],min:' + pricemin + ',max: ' + pricemax
+ ',stop: function(event, ui){updateResults("price",ui.values[0]+"-"+ui.values[1]);},slide: function (event, ui) {$("#amount").val("' + currencySign + '"+ui.values[0] + " - ' + currencySign + '" + ui.values[1]);}});$("#amount").val("' + currencySign + '"+$("#slider_pricefilter").slider("values", 0) + " - ' + currencySign + '" + $("#slider_pricefilter").slider("values", 1));});');
}
});
Это фактическая функция, которая должна быть вставлена:
$(function() {
$("#slider_pricefilter").slider({
range: true,
values: [12, 24],
min: 12,
max: 24,
stop: function (event, ui) {
updateResults("price", ui.values[0] + "-" + ui.values[1]);
},
slide: function (event, ui) {
$("#amount").val("€" + ui.values[0] + " - €" + ui.values[1]);
}
});
$("#amount").val("€" + $("#slider_pricefilter").slider("values", 0) + " - €" + $("#slider_pricefilter").slider("values", 1));
});
Однако, это кажется слишком сложный подход, так что должно быть лучше. Возможно, я могу изменить параметры существующей функции, а затем снова вызвать эту функцию? Если это способ, как убедиться, что введенный код действительно работает?
почему бы не использовать словарь вариантов, где вы будете использовать значение внутри функции, только если они установлены, так же, как функция слайда делает – Surender
Это звучит как проблема XY. Не могли бы вы предоставить подробную информацию обо всем своем коде, в том числе о том, как это происходит, и где извлекаются переменные. Динамическая вставка кода на страницу почти никогда не является правильным решением. –
@RoryMcCrossan код вызывается в запросе AJAX, я обновил сообщение. Трудно представить полный образец кода, поскольку значения переменных, которые используются в функции, подлежащей вставке, собираются из ряда других функций. Надеюсь, это еще раз объяснит это. – Flo