So recently I had to make ajax requests that pull in a piece of page with some scripting inside. The context does not matter much, what matters is the script executed fine on my localhost but not as a WordPress installation in a WP blog. After some head banging turns out that in my localhost I was using jQuery 1.9.1 and WP uses 1.8.3 .
So jQuery 1.9.1 seems to find the script tags too in the pulled ajax content. But what interests me is the WP plugin functionality. I could deregister the 1.8.3 and register the 1.9.1 but that is a very very bad practice. So I prefer a dirty approach better then a bad practice that could damage others.
I wrap my script in a invisible div like so
<div class="toexecute" style="display:none">
jQuery(document).ready(function($){
var videoplayersettings = {
autoplay : "off"
,videoWidth : "100%"
,videoHeight : 300
,constrols_out_opacity : 0.9
,constrols_normal_opacity : 0.9
,settings_hideControls : "off"
,design_skin: "skin_aurora"
,responsive: "on"
};
$('#vphistory').vPlayer(videoplayersettings);
})
</div>
Then in the javascript just do
jQuery('.toexecute').each(function(){
var _t = jQuery(this);
if(_t.hasClass('executed')==false){
eval(_t.text());
_t.addClass('executed');
}
})
at the end of the document and at the end of each complete ajax request.