11

私はクライアントのために何かに取り組んでおり、代理店はDoubleClick PARAGRAPH PARAGRAPHタグを起動するために少しのjQueryを作成しましたが、何らかの理由でタグが機能しません。

<script type="text/javascript">
$(function () {

    //var origOnClick = $('#trackingButton').attr("onclick");
    $('#trackingButton').click(fireFloodlight);
    function fireFloodlight() {
        if (Page_IsValid) {
            var axel = Math.random() + "";
            var a = axel * 10000000000000;
            $("body").append('<img src="https://ad.doubleclick.net/activity;src=2499215;type=axa_l124;cat=lpg_g263;ord=' + a + '?" width="1" height="1" alt=""/>');
            //eval(origOnClick);
        }
    }

});
</script>

私にはこのスクリプトは問題ないように見えますが、ライブ環境では「ad.doubleclick.net」への呼び出しは行われませんか?どんな助けでも大歓迎です。不思議なことに、タグは今週末まで機能していましたが、現在はアクションを記録していませんか?

編集:私はconsole.log(Page_IsValid)戻ったをしましたTrue

編集:問題のボタンのHTMLは次のとおりです。

<input type="submit" name="ctl00$ctl00$ctl00$BodyPlaceHolder$BodyPlaceHolder$WizardContentPlaceHolder$WizardCollectBasicSMEInfo$trackingButton" value="Get your quick quote" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$ctl00$ctl00$BodyPlaceHolder$BodyPlaceHolder$WizardContentPlaceHolder$WizardCollectBasicSMEInfo$trackingButton&quot;, &quot;&quot;, true, &quot;Form&quot;, &quot;&quot;, false, false))" id="trackingButton" class="button" />
4

8 に答える 8

6

すでにドキュメント上の関数の準備ができています。問題は、関数を間違った方法で呼び出していることです。そのような関数を呼び出したい場合は、関数式として宣言する必要があります(詳細については、このリンクの関数式を参照してください)。)::

$(function () {

var fireFloodlight = function()  {
    if (true) {
        var axel = Math.random() + "";
        var a = axel * 10000000000000;
        $("body").append('<img src="http://tejedoresdesuenos.com.mx/wp-content/uploads/2011/06/google.jpg" width="50" height="10" alt=""/>');
        alert('ello');
    }
}

$('#trackingButton').click(fireFloodlight);


});

実例。_

于 2012-11-05T23:00:57.410 に答える
3

このコードがheadHTMLファイルのタグに含まれていると、正しく機能しません。JavaScriptは、ページのレンダリングが完了する前に実行を試みます。このため、コードの実行時にはinput、パーサーによるとタグはまだ存在していません。ドキュメントレディ関数に配置することscriptも、HTMLドキュメントの最後(終了タグの前)にタグを配置することもできますbody

<script type="text/javascript">
    $(document).ready(function () {
        $('#trackingButton').click(fireFloodlight);
        function fireFloodlight() {
            if (Page_IsValid) {
                var axel = Math.random() + "";
                var a = axel * 10000000000000;
                $("body").append('<img src="https://ad.doubleclick.net/activity;src=2499215;type=axa_l124;cat=lpg_g263;ord=' + a + '?" width="1" height="1" alt=""/>');
            }
        }
    });
</script>

また、fireFloodlight他のonclick関数でこの関数を使用している場合を除き、無名関数として渡すことができます。

<script type="text/javascript">
    $(document).ready(function () {
        $('#trackingButton').click(function() {
            if (Page_IsValid) {
                var axel = Math.random() + "";
                var a = axel * 10000000000000;
                $("body").append('<img src="https://ad.doubleclick.net/activity;src=2499215;type=axa_l124;cat=lpg_g263;ord=' + a + '?" width="1" height="1" alt=""/>');
            }
        });
    });
</script>

さらに、最新バージョンのjQueryを使用している場合は、、、、または.on()の代わりに.live()使用することをお勧めします。前の2つは、最新バージョンのjQueryで技術的に非推奨になりました(ただし、しばらくの間削除されることは非常に疑わしいですが)。正しく覚えていれば、は単なるラッパーであるため、を使用する方が技術的に高速です。.delegate().click().click().on().on()

使用方法の例を2つ紹介します.on()

#trackingButton最初の例は、ページが最初にロードされた後に要素にイベントを追加するためのものです。

<script type="text/javascript">
    $(document).ready(function () {
        $('#trackingButton').on('click',function() {
            if (Page_IsValid) {
                var axel = Math.random() + "";
                var a = axel * 10000000000000;
                $("body").append('<img src="https://ad.doubleclick.net/activity;src=2499215;type=axa_l124;cat=lpg_g263;ord=' + a + '?" width="1" height="1" alt=""/>');
            }
        });
    });
</script>

ここでの2番目の例は、イベントを親要素にアタッチbubblesし、DOMを親要素に追加した後に関数を実行することで機能し、ターゲット要素は2番目のパラメーターで提供されるセレクターと一致します。これは通常、初期ロード後に動的にページに追加/削除/再追加される可能性のある要素にイベントをアタッチするときに使用されます。

<script type="text/javascript">
    $(document).ready(function () {
        $(document).on('click','#trackingButton',function() {
            if (Page_IsValid) {
                var axel = Math.random() + "";
                var a = axel * 10000000000000;
                $("body").append('<img src="https://ad.doubleclick.net/activity;src=2499215;type=axa_l124;cat=lpg_g263;ord=' + a + '?" width="1" height="1" alt=""/>');
            }
        });
    });
</script>

これらの例がお役に立てば幸いです。

于 2012-10-30T20:03:27.220 に答える
3

これを試して:

        //var origOnClick = $('#trackingButton').attr("onclick");
        $('#trackingButton').live("click", function(){

            if (Page_IsValid) {
                var axel = Math.random() + "";
                var a = axel * 10000000000000;
                $("body").append('<img src="https://ad.doubleclick.net/activity;src=2499215;type=axa_l124;cat=lpg_g263;ord=' + a + '?" width="1" height="1" alt=""/>');
                //eval(origOnClick);
            }
         });
于 2012-10-31T17:10:19.657 に答える
2

実際には、同じ要素に同じイベントに対して2つのイベントハンドラーを割り当てました。私の知る限り、それは不可能なはずです。

また、次のように、関数呼び出しを無名関数内にラップする必要があります。

$('#trackingButton').click( function() {

    fireFloodlight();

});

HTMLマークアップでイベントハンドラーを直接割り当てることは避けたい場合があります。これは一般的に悪い習慣と見なされています。

クリックイベントハンドラーを割り当てるように呼び出したときに、#trackingButtonがDOMに既に存在することを確認してください。

また、コンソールログにエラーがないこと、およびイベントハンドラーを割り当てようとするときに、他のプラグインやスクリプトがDOMを変更していないことを確認してください。

于 2012-10-30T11:04:01.753 に答える
2

htmlノードには明示的なonclick属性があり、コードによれば、この属性は非アクティブ化されていません。

何をしWebForm_DoPostBackWithOptionsますか?一部の構成で、この関数がを返す場合false、他のハンドラーが呼び出されないようにします。

htmlを生成するコードを操作できる場合は、このonclick属性をノードから削除し、jqueryクリックハンドラーとして宣言することをお勧めします。

于 2012-10-31T10:01:25.253 に答える
2

このコードは、イベントとセレクターにバインドonclickれたイベントclickの両方を起動します。#trackingButton

イベントを移動して、onclickインラインにするのではなく、関数を起動することができます。

<input type="submit" onclick="myPostBack()" name="ctl00$ctl00$ctl00$BodyPlaceHolder$BodyPlaceHolder$WizardContentPlaceHolder$WizardCollectBasicSMEInfo$trackingButton" value="Get your quick quote" id="trackingButton" class="button" />

....次にjs:

function myPostBack() {
/*
    WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ctl00$ctl00$BodyPlaceHolder$BodyPlaceHolder$WizardContentPlaceHolder$WizardCollectBasicSMEInfo$trackingButton", "", true, "Form", "", false, false))
*/
    alert("postback executed")
}

myPostBack:関数が実行されたことを確認するための例としてアラートを設定しました。

が実行されていない場合WebForm_DoPostBackWithOptionsは、構文エラーがないことを確認し(&quot;トリガーjsエラーを使用)、適切なパラメーターを渡します...詳細についてはこれを確認してください。

... js(続き)

function fireFloodlight() {
    if (Page_IsValid) {
        var axel = Math.random() + "";
        var a = axel * 10000000000000;
        $("body").append('<img src="https://ad.doubleclick.net/activity;src=2499215;type=axa_l124;cat=lpg_g263;ord=' + a + '?" width="1" height="1" alt=""/>');
        //eval(origOnClick);

        // append another image for verification purposes
        $("body").append('<img src="http://www.devaldi.com/wp-content/uploads/2009/10/jquery-logo.gif" alt="jquery" />')
    }
}

$(function() {
  // using .on() requires jQuery 1.7+
    $('#trackingButton').on("click", function() {
        fireFloodlight();
    });
});

Page_IsValidそれがうまくいくと仮定するとtrue... JSFIDDLEの例を参照してください...すべてがうまくいけば、ポストバックアラートとjQuery画像が表示されます;)

于 2012-11-04T22:01:02.203 に答える
1

#trackingButtonをどのように追加しますか?jQueryで実行している場合は、クリックする代わりにonを使用してください

 $('body').on('click','#trackingButton',function(){
      console.log("Page_IsValid: "+Page_IsValid);
      if (Page_IsValid) {
        var axel = Math.random() + "";
        var a = axel * 10000000000000;
        $("body").append('<img src="https://ad.doubleclick.net/activity;src=2499215;type=axa_l124;cat=lpg_g263;ord=' + a + '?" width="1" height="1" alt=""/>');
      }
    });

Page_IsValidはtrueである必要があり、imgをDOMに追加する必要があります。

うまくいきましたか?

于 2012-10-25T11:07:22.197 に答える
1

送信ボタンがリクエストを発行している可能性があるため、画像が本文に追加されていることを確認することはできません。 event.preventDefault()これを修正する可能性があります。

$('#trackingButton').click(function(event) {
    event.preventDefault();
    if (Page_IsValid) {
        var axel = Math.random() + "";
        var a = axel * 10000000000000;
        $("body").append('<img src="https://ad.doubleclick.net/activity;src=2499215;type=axa_l124;cat=lpg_g263;ord=' + a + '?" width="1" height="1" alt=""/>');
        //eval(origOnClick);
    }
}
于 2012-11-06T07:10:56.050 に答える