jQuery:在iframe中工作而不重新链接
也许标题有点误导,问题也可能是这样,但我很好奇,如果不在iframe加载的HTML中重新链接到jQuery的源代码,如何从内部(同一主机/域)jQuery:在iframe中工作而不重新链接,jquery,iframe,Jquery,Iframe,也许标题有点误导,问题也可能是这样,但我很好奇,如果不在iframe加载的HTML中重新链接到jQuery的源代码,如何从内部(同一主机/域)iframe使用jQuery呢 我可以使用parent.jQuery()访问它,但每当我试图用它来操作元素时,它都会在父帧中工作,而不是当前的活动帧 Iframe是使用ColorBox v.1.3.16生成的 这是我到目前为止所做的尝试,一点运气都没有。。(这来自iframe内部): 我在这里使用了document作为父选择器,但它不起作用,我不知道应该在
iframe
使用jQuery呢
我可以使用parent.jQuery()访问它代码>,但每当我试图用它来操作元素时,它都会在父帧中工作,而不是当前的活动帧
Iframe是使用ColorBox v.1.3.16
生成的
这是我到目前为止所做的尝试,一点运气都没有。。(这来自iframe内部):
我在这里使用了document
作为父选择器,但它不起作用,我不知道应该在那里使用什么
提前谢谢
编辑:
源自T.J.Crowder:
parent.jQuery(function($) {
var element = $("#time-bar", document);
console.log(element);
});
console.log()
返回一个空对象,或者实际上不知道它是否可以被称为对象:[]
除非有其他因素,否则将文档
作为上下文文档传入($()
)函数的代码应该可以工作
例如:
HTML:
iFrame HTML:
<input type='button' id='theButton' value='Click Me'>
iFrame JavaScript:
parent.jQuery(function($) {
$("#theButton", document).click(function() {
$("<p>Button clicked!</p>").appendTo(document.body);
});
});
parent.jQuery(函数($){
$(“#按钮”,文档)。单击(函数(){
$(“按钮已单击!”).appendTo(document.body);
});
});
尽管如此,如果在父级和帧中使用与jQuery文件完全相同的链接(可能来自它所在的CDN之一),那么开销确实很小。如果无法控制标记,则可以在iframe中插入脚本元素。如果我正确理解了问题,请参见:
更重要的是:
$().ready(function () {
$("#iframeID").ready(function () { //The function below executes once the iframe has finished loading
$('some selector', frames['nameOfMyIframe'].document).doStuff();
});
};
$().ready(函数(){
$(“#iframeID”).ready(函数(){//iframe加载完成后,将执行下面的函数
$('some selector',frames['nameofmiFrame'].document.doStuff();
});
};
嗯,似乎不起作用。。有没有可能是由colorbox
引起的错误?嗯,可能是我的错,但仍然与结果相混淆。无论如何,谢谢!接受了。@Tom:对不起,不太明白--你把问题解决了吗?从你的问题编辑中,似乎你没有,但你接受了这个答案,所以…:-)您在编辑中列出的结果([]
)表明iframe中没有带有id
“时间条”的元素…@Tom:好吧,有时候人们会这样做(我不明白)。很高兴这有帮助!
parent.jQuery(function($) {
$("#theButton", document).click(function() {
$("<p>Button clicked!</p>").appendTo(document.body);
});
});
$().ready(function () {
$("#iframeID").ready(function () { //The function below executes once the iframe has finished loading
$('some selector', frames['nameOfMyIframe'].document).doStuff();
});
};