iT邦幫忙

0

動態產生的iframe, 父層的按鈕無法作用

目前有一個功能是,(父層)點選按鈕可以改變(子層)文字大小

點選menu會動態產生iframe(選單設定)

https://ithelp.ithome.com.tw/upload/images/20171030/20106345pXyO6eBQF1.png

目前遇到的問題是,當我點選按鈕,只有"第一個iframe"會作用(改變文字大小)
動態產生的iframe擇不會有作用~"~

https://ithelp.ithome.com.tw/upload/images/20171030/20106345rQSvuJcNbp.png

請問各位大大, 我要如何改寫才會正常作用?
在每一個頁面點選時, 字型大小按鈕都會作用, 然後文字也會變.

看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2017-10-30 14:04:36 檢舉
parent跟iframe裡面,是不一樣的context。你要從ifrmae裡面定義parent裡面的事件時,要使用parent的jQuery實體。例如:`parent.$('.XXX').on('click',function(){...})`
froce iT邦研究生 4 級 ‧ 2017-10-30 16:22:10 檢舉
大神可以順便幫我解惑嗎?
我曾經遇到像下面那樣的問題。
$(elm).on(event, function(){...})這樣對動態產生的element沒有影響,$(document).on(event, elm, function(){})這樣就ok。
請問這兩種寫法有什麼差?
fillano iT邦超人 1 級 ‧ 2017-10-30 17:58:49 檢舉
後面這個寫法,是把document當作事件的代理。事件是在document被觸發,觸發後他再去找elm看看事件的propagation是否有經過elm,這叫做event delegation。你可以看一下jQuery上面的解釋:https://learn.jquery.com/events/event-delegation/,或是用'jquery event delegation'當作關鍵字找一找,應該有非常多文章。

因為事件是bind在document,不是在elm,而且是在事件觸發時才用selectors去過濾elm,所以對動態產生的elm依然有作用。
froce iT邦研究生 4 級 ‧ 2017-10-30 21:13:22 檢舉
謝謝解惑。

1 個回答

0
froce
iT邦研究生 4 級 ‧ 2017-10-30 12:02:20

$(elm).on(event, function(){...})

改成

$(document).on(event, elm, function(){})

試試看。

我要發表回答

立即登入回答