jquery选择iframe儿童

时间:2010-05-23 20:17:12

标签: javascript jquery

我正在使用editArea库和jquery来做我需要的......

http://www.cdolivet.com/index.php?page=editArea&sess=2b8243f679e0d472397bfa959e1d3841

所以在我的html中有一个iframe标签,editArea使用我需要的是用jquery访问类似的东西

$('iframe textarea').keydown(function (e){
   number = 17; //any number really :)
    if(e.which == number){
        //do something...
        alert('Done...');
    }
});

我尝试了以上但看起来它没有检测到那个键。但如果选择器是$(文件)它的工作原理 因此,该功能的其余部分工作就是它没有拿起iframes textarea keydown

任何想法? 感谢

7 个答案:

答案 0 :(得分:65)

$("iframe").contents().find("textarea").keydown(...)

答案 1 :(得分:9)

您需要在iframe的内部document内进行搜索,才能获得textarea元素:

var textarea = $('textarea', $('iframe').get(0).contentWindow.document);
textarea.keydown(function (e){
   var number = 17;
   var code = (e.keyCode ? e.keyCode : e.which);

    if(code == number){
        //do something...
        alert('Done...');
    }
});

答案 2 :(得分:2)

你可以旅行任何级别,以上答案是正确的。我做了如下

var iframeMain = $("#iframe0").contents().find('#iframeMain');
var detailsForm = $(iframeMain).contents().find('#detailsform');

访问父母可以使用

window.parent.parent. // upto any level 

答案 3 :(得分:1)

您需要访问iframe contentWindow.document,而不是iframe本身。

答案 4 :(得分:0)

你应该这样做


iframeDoc = document.getElementById('resultsFrame').contentWindow;
// result frame is id of iframe
$(iframeDoc).keydown(function(e))
{
// your functionality here
}

答案 5 :(得分:0)

如果所有其他方法都失败了,我最终通过包装这个函数来完成上述工作:

$(window).blur(function () {
  // genius code here
}

答案 6 :(得分:0)

下面的代码帮助了我。

$(document).ready(function(){
var iFrameDOM = $("iframe#frameID").contents();

iFrameDOM.find(".page").css("background-color", "#fff");

});