2013-08-22 102 views
1

我試圖將css應用於標籤,當輸入字段使用jQuery進行集中時,但它似乎不起作用。聯繫表單被加載到iframe中。如果沒有使用iframe,它可以正常工作 - 請檢查此jsfiddle:http://jsfiddle.net/nN3w2/(如果iframe不加載服務器可能會關閉 - 但代碼在那裏供您查看)。jQuery不處理iframe內容

iframe和聯繫表單位於相同的域。聯繫表格包含使用PHP到我的網站。

<script type="text/javascript"> 
jQuery(document).ready(function($) { 
    $("#iframe").contents().find("input").focus(function() { 
     $("#iframe").contents().find("label").css('opacity','0'); 
    }); 
}); 
</script> 

非iframe

<script type="text/javascript"> 
jQuery(document).ready(function($) { 
    $("input").focus(function() { 
     $("label").css('opacity','0'); 
    }); 

    $("input").focusout(function() { 
     if($("input").val() ==="") { 
      $("label").css('opacity','1'); 
     } 
    }); 

}); 
</script> 
+0

這兩個文檔位於相同的域時適用於我:http://jsfiddle.net/doktormolle/Q7QuW/1/ –

+1

這是否回答您的問題? http://stackoverflow.com/a/5976237/779092 注意:您將要在iframe的'onload'事件中運行我們的代碼,而不是當前文檔的事件。 – Shea

+0

我在jsfiddle中用我的網站url進行了測試,所以這就是爲什麼它不起作用。但現在它適用於我的域名,謝謝。 – lonewulf

回答

2

不可能

不能應用了jQuery其他域中的iframe。它由於安全而被阻止。

擴大的「不可能」 ......

的「Same origin policies」適用:你唯一的iframe出現的是來自另一個內容溝通的方式[域|子域協議|端口]就是通過postMessage API ,這當然需要其他部分(iframe中的文檔)來收聽您的消息。 OP的評論後

更新

也許你可以做這樣的事情

$('#iframeOne', window.parent.document); 

另一種方式來做到這一點

window.parent.$("#iframeOne"); 

另一種方式

$("#iframeOne", top.document); 

如果你知道父窗口的名稱,你也可以做

$("#iframeOne",opener.document) 

這裏opener是窗口的名稱。

+0

雖然iframe位於我的域名,並且聯繫表格php文件也是如此,但我仍然無法訪問它? – lonewulf

+0

@zefs更新了答案。 –

+0

我正在測試它與jsfiddle與我的網站網址,所以這就是爲什麼它不工作。但現在它適用於我的域名,謝謝。 – lonewulf