2

私はjquery評価プラグインを使用しており、次のようなdivでこれを使用しています:

HTML:

<div id="highlighted" class="span6">
<div class="row">
    <div id="high-desc" class="span4">
        <span class="movie-title fat"><a class="strong" href="movies.jsp?id=5">Watchmen</a> (2009)</span><br />
        <div id="rating"></div>
    </div>
</div>

Jquery:

$("#rating").rateit({
    max: 10,
    min: 0,
    step: 1
});

それは素晴らしい働きをします。ただし、のコンテンツを他のコンテンツ(以下のような)に置き換えるとdiv#highlighted、プラグインが機能しません。

$('// some link').on("click", function(){ 
    var Id = // some id
    title="reco_product_stream.jsp?type=high&id="+Id;
    ('#highlighted').load(title);
});

私は次のようにすべてのajax呼び出しでプラグインをリロードしようとしました:

$('// some link').on("click", function(){ 
    var Id = // some id
    title="reco_product_stream.jsp?type=high&id="+Id;
    ('#highlighted').load(title);
    $("#rating").rateit({max: 10, min: 0, step:1});
});

しかし、それは機能しません。

4

2 に答える 2

3

動的に追加されたコンテンツでプラグインを再初期化する必要があります。

これを行うには、コールバック関数を使用してリクエストが完了するのを待つ必要があります。

jQueryのloadメソッドは、ほとんどのajaxメソッドと同様に非同期です。

http://api.jquery.com/load/

$('// some link').on("click", function(){ 
    var Id = // some id
    title="reco_product_stream.jsp?type=high&id="+Id;
    ('#highlighted').load(title,function(){ //callback executes after load
        $("#rating").rateit({max: 10, min: 0, step:1});
    });
});
于 2013-01-04T14:09:12.350 に答える
2
$('// some link').on("click", function(){ 
    var Id = // some id
    title="reco_product_stream.jsp?type=high&id="+Id;
    $('#highlighted').load(title);
    $("#rating").rateit({max: 10, min: 0, step:1});
});

$("#rating").rateit({max: 10, min: 0, step:1});上記では、 .loadがロードを完了する前にコードが実行されます。

.loadコールバックで使用します。

$('#highlighted').load(title, function(){
 $("#rating").rateit({max: 10, min: 0, step:1});
});

http://api.jquery.com/load/

于 2013-01-04T14:08:20.440 に答える