wordpress 用の高度な Ajax ページ ローダープラグインを使用して、ajax 経由でコンテンツをロードしています。上記のページをURLから直接ロードするとスクリプトは正常に実行されますが、ajaxロードを介してそれらに移動すると、スクリプトが機能しなくなります。
私が使用しているスクリプトの例は
var o = {
init: function(){
this.diagram();
},
random: function(l, u){
return Math.floor((Math.random()*(u-l+1))+l);
},
diagram: function(){
var r = Raphael('diagram', 600, 600),
rad = 73,
defaultText = 'Skills',
speed = 250;
r.circle(300, 300, 85).attr({ stroke: 'none', fill: 'rgba(0,0,0,.10)' });
var title = r.text(300, 300, defaultText).attr({
font: '14px ralewaylight',
fill: '#fff'
}).toFront();
r.customAttributes.arc = function(value, color, rad){
var v = 3.6*value,
alpha = v == 360 ? 359.99 : v,
random = o.random(91, 100),
a = (random-alpha) * Math.PI/180,
b = random * Math.PI/180,
sx = 300 + rad * Math.cos(b),
sy = 300 - rad * Math.sin(b),
x = 300 + rad * Math.cos(a),
y = 300 - rad * Math.sin(a),
path = [['M', sx, sy], ['A', rad, rad, 0, +(alpha > 180), 1, x, y]];
return { path: path, stroke: color }
}
jQuery('.get').find('.arc').each(function(i){
var t = jQuery(this),
color = t.find('.color').val(),
value = t.find('.percent').val(),
text = t.find('.text').text();
rad += 30;
var z = r.path().attr({ arc: [value, color, rad], 'stroke-width': 20 });
z.mouseover(function(){
this.animate({ 'stroke-width': 30, opacity: 1 }, 1000, 'elastic');
if(Raphael.type != 'VML') //solves IE problem
this.toFront();
title.stop().animate({ opacity: 0 }, speed, '>', function(){
this.attr({ text: text + '\n' + value + '%' }).animate({ opacity: 1 }, speed, '<');
});
}).mouseout(function(){
this.stop().animate({ 'stroke-width': 20, opacity: 1 }, speed*4, 'elastic');
title.stop().animate({ opacity: 0 }, speed, '>', function(){
title.attr({ text: defaultText }).animate({ opacity: 1 }, speed, '<');
});
});
});
}
}
jQuery(function(){ o.init(); });
クリック機能に.delegateを使用できることは理解していますが、これはクリック以外の機能には役立ちません。
補足: プラグインには「コードのリロード」機能があり、貼り付けたスクリプトはコンソールにリロードされたように表示されますが、実際には機能しません。