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
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
Nasıl hata ayıklama Firebug (veya benz...
Yeni sayfa JavaScript kullanarak yükle...
Focus () JavaScript veya jQuery aldığı...
Nasıl dosya jQuery veya JavaScript var...
Nasıl jQuery veya Javascript ile bir ç...