0

jQuery 関数を要素に動的に挿入しようとしています。関数のパラメーターが変更される可能性があるため、これを動的に行います。

values、プロパティmin、および およびイベントmaxに関連付けられた関数パラメータは動的です。したがって、関数全体を動的に挿入すると思いましたが、現在は文字列として挿入しています。これは明らかにテキストを挿入するだけで、コードは機能しません。stopslide

    $.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));
});

ただし、これはアプローチが複雑すぎるように思われるため、より良い方法が必要です。おそらく、既存の関数のパラメーターを変更してから、その関数を再度呼び出すことはできますか? これが進むべき道である場合、挿入されたコードが実際に機能することを確認するにはどうすればよいですか?

4

1 に答える 1

1

スライダーを左側のナビゲーション バーに挿入するとき。このように挿入

//this functionString will contain all your javascript.
var functionString = '(function() { alert("hi"); })()';

$(".left_nav").append("<div id='slider_pricefilter'></div>");//create the slider div in the left nav
$(".left_nav").append("<script>" + functionString + "</script>");//append the slider event to the slider_pricefilter in the left nav
于 2013-11-08T13:27:30.437 に答える