我正在尝试将 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));
});
但是,这似乎是一种过于复杂的方法,因此必须有更好的方法。也许我可以更改现有函数的参数,然后再次调用该函数?如果这是要走的路,如何确保注入的代码确实有效?