【发布时间】:2015-03-30 23:13:24
【问题描述】:
我有以下代码在页面加载后动态地将 jQuery 加载到页面中,然后尝试运行一些自己的 jQuery。页面标题的第一个控制台日志有效。当它稍后在页面中找不到类“special-div”并将其替换为适当的文本时,就会出现问题。有什么想法吗?
//Load jQuery library using plain JavaScript
(function(){
var newscript = document.createElement('script');
newscript.type = 'text/javascript';
newscript.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(newscript);
// Poll for jQuery to come into existance
var checkReady = function(callback) {
if (window.jQuery) {
callback(jQuery);
}
else {
window.setTimeout(function() { checkReady(callback); }, 100);
}
};
// Start polling...
checkReady(function($) {
console.log( 'jQuery is loaded on: ' + $('title').text() );
$( '.special-div' ).each(function( index ) {
console.log( index + ": " + $( this ).text() );
$( this ).replaceWith( "Say something here " + $( this ).attr( "id" ) + ' ' + $( this ).attr( "title" ) );
});
});
})();
HTML 看起来像这样:
<div id="something" class="special-div" title="else"> </div>
我正在处理的古怪 CMS 只允许我粘贴到一个外部 javascript 文件中,因此我必须通过该文件加载 jQuery 和我需要的所有其他脚本。
编辑:
所以我进行了一些额外的测试并尝试了这个:
console.log( 'jQuery is loaded on: ' + $( '.special-div' ).attr( "id" ) );
我得到的回应是:
jQuery is loaded on: undefined
【问题讨论】:
-
我用 jsfiddle 试过了,它可以工作 jsfiddle.net/L072eyax
-
代码按原样工作,但通过调用
replaceWith删除了 div。 在之后你想引用.special-div吗? -
不。在我正在处理代码的页面中,什么都不做,每个索引的控制台日志永远不会发生。
标签: javascript jquery html