1

これが私のHTMLjQueryのスニペットです。

<div id="navigator">    
    <div class="breadcrumb">
        <a href="#">Competitors</a>
    </div>
    <div class="video-browser">
        <div class="folder">
            <a id="221" class="accessor">
                <img src="/assets/images/folder.png" />
                <span>Aron#1</span>
            </a>
        </div>
        <script type="text/javascript">
        $("a.accessor").click(function(event) {
            var cId = this.id;
            $.get("/video/" + cId)
            .done(function(data){
                $("#navigator").html(data);
            })
            .fail(function(data) {
                alert("An error occured during request. Please try again later!");
            });
        });
        </script>
    </div>
</div>

ご覧のとおり、応答が来ると、jquery はHTMLコンテンツを置き換えますが、それ自体を他のスクリプトに置き換えます (これは、応答としてのjQuery要求からのものです)。まず、ビューページでこれを取得します。問題は、HTMLソースを見ると、HTMLとスクリプトが変更されていないことです。さらにクリックすると、奇妙な動作が発生することがわかります。

私がやっていることが良いかどうか誰か教えてもらえますか? はいの場合、私のスクリプトの問題は何ですか?

ありがとう。


EDIT1:

現在のHTMLコンテンツを置き換える応答は次のとおりです。

<div class="breadcrumb">
    <a href="/video">Competitors</a>
    <span>&gt;</span>
    <a href="#">Aron#1</a>
</div>
<div class="video-browser">
    <div class="folder">
        <a id="261_241" class="accessor">
            <img src="/assets/images/movie_file.png" />
            <span>test</span>
        </a>
    </div>

    <script type="text/javascript">
    $("a.accessor").click(function(event) {
        var compId = this.id.substring(0, this.id.indexOf("_"));
        var movieId = this.id.substring(this.id.indexOf("_") + 1);
        $.get("/video/" + compId + "/" + movieId)
            .done(function(data){
                $("#videoPlayerDiv").html(data).html();
            })
            .fail(function(data) {
                alert("An error occured during request. Please try again later!");
            });
        });
     </script>
</div>
4

2 に答える 2

0

実際、多くの苦労の後、私は最終的にそれが展開の問題であることに気付きました. jQueryは適切に動作しますが、アプリケーションのセキュリティ制限により、いくつかのことを実行できません。アプリケーション全体に関連しています。

于 2013-10-17T08:06:23.947 に答える
0

他の人が示唆しているように、スクリプトをhtmlから移動することをお勧めします。したがって、最初は次のようなものにすることができます。

<div id="navigator">    
    <div class="breadcrumb">
        <a href="#">Competitors</a>
    </div>
    <div class="video-browser">
        <div class="folder">
            <a id="221" class="accessor">
                <img src="/assets/images/folder.png" />
                <span>Aron#1</span>
            </a>
        </div>
    </div>
</div>

また、スクリプトは id タグで外側にありますが、応答データで HTML 部分と JS 部分を別々に送信できるかどうかを確認してください。次に、以下に示すことを実行できます。

    <script type="text/javascript" id="replacableJS">
    $("a.accessor").click(function(event) {
        var cId = this.id;
        $.get("/video/" + cId)
        .done(function(data){
            $("#navigator").html(data.htmlPart); // NOTE:
            $("#replacableJS").text(data.jsPart); // NOTE:
        })
        .fail(function(data) {
            alert("An error occured during request. Please try again later!");
        });
    });
    </script>
于 2013-10-17T06:56:16.660 に答える