代码之家  ›  专栏  ›  技术社区  ›  Val

jquery select iframe子项

  •  44
  • Val  · 技术社区  · 14 年前

    我正在使用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...');
        }
    });
    

    我试过上面的方法,但好像没有检测到钥匙。但如果选择器是$(document),它就可以工作。 因此,该函数的其余部分工作,只是它没有拾取iframes文本区域键down

    有什么想法吗? 谢谢

    7 回复  |  直到 6 年前
        1
  •  64
  •   jAndy    14 年前
    $("iframe").contents().find("textarea").keydown(...)
    
        2
  •  9
  •   Christian C. Salvadó    14 年前

    你需要在内心深处寻找 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...');
        }
    });
    
        3
  •  2
  •   Vins    12 年前

    你可以走任何一级,以上答案都是正确的。我做了如下

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

    用于访问您可以使用的父级

    window.parent.parent. // upto any level 
    
        4
  •  1
  •   Sean Kinsey    14 年前

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

        5
  •  0
  •   sushil bharwani    14 年前

    你应该这么做

    
    iframeDoc = document.getElementById('resultsFrame').contentWindow;
    // result frame is id of iframe
    $(iframeDoc).keydown(function(e))
    {
    // your functionality here
    }
    
    
        6
  •  0
  •   Adam Grant    12 年前

    如果所有其他方法都失败了,那么我将通过包装此函数来完成上面的工作:

    $(window).blur(function () {
      // genius code here
    }
    
        7
  •  0
  •   Manveer Singh    6 年前

    下面的代码帮助了我。

    $(document).ready(function(){
    var iFrameDOM = $("iframe#frameID").contents();
    
    iFrameDOM.find(".page").css("background-color", "#fff");
    

    (});