SORU
5 Mayıs 2009, Salı


JavaScript: özelliği değerini değiştirme veya jQuery ile olmadan

Bir çapa onclick öznitelik değerini değiştirmek istiyorum. JavaScript içeren yeni bir dize ayarlamak istiyorum. (Bu dize HTML onclick öznitelik koyabilirsiniz ne olursa olsun sunucu tarafından istemci tarafı JavaScript kodu, içerir verilmiştir.) İşte denedim bir kaç şey:

  • Bir WordPress kullanmak attr("onclick", js) kullanarak Firefox ve IE6/7 ile çalışmıyor.
  • setAttribute("onclick", js) kullanarak Firefox ve IE8, ama/7 IE6 ile çalışır.
  • onclick = function() { return eval(js); } eval() return kod geçti kullanmak için izin verilmez çünkü işe yaramıyor.

Herkes Firefox için bu işi yapmak için özelliği özniteliği ayarlamak ve IE 6/7/8 bir öneriniz var mı? Ayrıca bu test için kullandığım kod aşağıda.

<html>
    <head>
        <script type="text/javascript"
                src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                var js = "alert('B'); return false;";
                // Set with JQuery: doesn't work
                $("a").attr("onclick", js);
                // Set with setAttribute(): at least works with Firefox
                //document.getElementById("anchor").setAttribute("onclick", js);
            });
        </script>
    </head>
    <body>
        <a href="http://www.google.com/" id="anchor" onclick="alert('A'); return false;">Click</a>
    </body>
</html>

CEVAP
5 Mayıs 2009, Salı


Eğer jQuery kullanıyorsanız daha fazla onClick kullanarak olmamalıdır. jQuery ve olaylar bağlama bağlama kendi yöntemleri sağlar. .click() bkz

$(document).ready(function(){
    var js = "alert('B:'   this.id); return false;";
    // create a function from the "js" string
    var newclick = new Function(js);

    // clears onclick then sets click using jQuery
    $("#anchor").attr('onclick', '').click(newclick);
});

onClick fonksiyonu iptal etmek ve "bir dize" de. javascript tutmalı

Yapılacak en iyi şey HTML kodu <a> eleman onclick="" Kaldır ve ardından bir olay bağlama Unobtrusive yöntemi kullanarak geçiş olacaktır.

Sen de " dedi

onclick = function() { return eval(js); } kullanarak kod eval geçti dönüş kullanmak için izin verilmez çünkü çalışmıyor().

onclick = eval("(function(){" js "})"); wrap edecek mi, ama hayır - o 'js' fonksiyonu bir kasa içinde değişken. onclick = new Function(js); gibi çalışır ve biraz daha temiz okumaktır. (sermaye F not) -- documentation on Function() constructors

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blue Lightning TV

    Blue Lightni

    9 EKİM 2011
  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006