本文實例講述了iframe中使用jquery進行查找的方法。分享給大家供大家參考,具體如下:
問題:
今天在公司是給ckeditor添加一個“是否顯示”圖片標題的功能
難點:
插件的內容很多,功能相當強大,在短時間之內無法通讀和理解里面的邏輯關系,而且修改的內容不能破壞插件內部的邏輯關系,不能因為添加一個功能而引入更多的問題,因此只能從局部去解決這個問題
突破口:
知道頁面時使用iframe框架插入的html,頁面有些初始化的功能是在這里完成的,因此在這里添加這個checkbox組件,然后根據最后的window去尋找自己想要處理的window對象——window.parent.document.body
jQuery(expression, [context])——如果指定了 context 參數,如一個 DOM 元素集或 jQuery 對象,那就會在這個 context 中查找。
下面這個例子就是想在iframe的父窗口中添加組件
$('tr.cke_dialog_ui_hbox', parent.document.body).prepend('<td><input type="checkbox" id="show_img_title" class="cke_dialog_ui_hbox_first">照片標題描述帶入日記</td>');
不能在閉包里面去訪問動態添加的組件,因為在頁面加載的時候就已經運行了閉包里面的東西,但是頁面還沒有添加ID為kkkk的組件,使用$("#kkkk")得到的值就為空,這樣不能實現預期的目的,出現異常的現象,在瀏覽器中會報腳本錯誤
如何判斷jquery是否查找到符合條件的對象?
if(0==$(".check_show_img_title", parent.document.body).length){ alert("沒有查找到對象"); }else{ alert("有"+$(".check_show_img_title", parent.document.body).length+"組件符合查詢條件"); }
經驗之談:
在頁面中動態添加了組件之后,由于刷新頁面就恢復了正常初始化的狀態,但是如果是局部刷新,可能會添加多個組件,但是如果只需要一個組件,則就是在離開頁面的時候刪除自己動態添加的組件,這樣問題就來了,可能在不同的瀏覽器中不能刪除,這樣就會很郁悶,產生出瀏覽器兼容的問題,既然是這樣那么可以換一種思維方式,在某種狀態(在標簽中添加屬性)下就添加,否則就不添加,這樣就不用去刪除自己添加的組件了,換種方式解決了瀏覽器兼容的問題
更多關于jQuery相關內容感興趣的讀者可查看本站專題:《jQuery常用插件及用法總結》、《jquery中Ajax用法總結》、《jQuery表格(table)操作技巧匯總》、《jQuery拖拽特效與技巧總結》、《jQuery擴展技巧總結》、《jQuery常見經典特效匯總》、《jQuery動畫與特效用法總結》及《jquery選擇器用法總結》
希望本文所述對大家jQuery程序設計有所幫助。