2014-11-05 58 views
0

在一個jQuery UI模式對話框中,我有一個訪問所選音頻文件的按鈕。這是對話內容設置:音頻按鈕在一個模式框中工作,但不在另一個模式框中,爲什麼?

var form_config ='<div id="t2e_modal"><span id="wrap_user_fb"><img id="user_fb" src="/templates/beez_20/images/e2tw/grey32.png" alt="fb" height="20px" width="20px"></span><p id="eng_text">Please enter the English text here</p><p id="thai_text">กรุณาเขียนเป็นภาษาอังกฤษที่นี่</p><form id="t2e_form" action="#"><input type="text" id="t2e_w" name="t2e_w" autocomplete="off"><input id="t2e_submit" type="submit" value="Submit"><p><span class="fa fa-volume-up fa_volume_t2e"></span></p></form><span id="output"></div>'; 
    /* form config appended to dialog */ 
    jQuery("div#t2e_dialog").append(form_config); 

這個播放音頻:

jQuery("span.fa-volume-up").on("click",function (evnt) { 
    var elementId = idClickedEl.replace(/_img/i,""), 
     pathVar = document.getElementById("pathVar").innerHTML, 
     oggVar = pathVar+elementId+".ogg", 
     mp3Var = pathVar+elementId+".mp3", 
     audioElement = document.createElement("audio"); 
    audioElement.src = Modernizr.audio.ogg ? oggVar : mp3Var; 
    audioElement.load(); 
    audioElement.play(); 
}); 

這一切工作正常,沒有問題。但在具有基本相似代碼的另一個模式對話框中,對話框顯示「確定」,並顯示所選文本,但音頻不播放。以下是對話內容:

var ws_modal_html = '<div class = "ws_dialog_box"><p class = "ws_dialog_text">Here is the word (in red) in a sentence</p><p class="ws_dialog_thai">คำในประโยค</p><p class = "ws_dialog_sentence"></p><p><span class="fa fa-volume-up fa_volume_ws"></span></p></div>'; 
    ws_dlog.html(ws_modal_html); 
    jQuery("div.ws_dialog_box p.ws_dialog_sentence").text(modalText); 

,這是音頻播放部分:

jQuery("span.fa-volume-up").on("click", function(evnt) {  //div#wsd_text 
    alert("hello"); 
    var pathVar = document.getElementById("pathVar").innerHTML, 
     oggVar = pathVar + "wsde" + idClickedEl + ".ogg", 
     mp3Var = pathVar + "wsde" + idClickedEl + ".mp3", 
     audioElement = document.createElement("audio"); 
    audioElement.src = Modernizr.audio.ogg ? oggVar : mp3Var; 
    audioElement.load(); 
    audioElement.play(); 
}); 

當音頻按鈕(FA-體積增加)被點擊,警報(「你好」)做不顯示提示jQuery選擇不起作用。明顯的東西?任何幫助將是非常受歡迎的。謝謝

+0

是有可能,你的頁面加載後產生第二個模式? – 2014-11-05 02:09:04

+0

HTML的兩個塊創建'.span.fa -volume-up'元素,並且這兩個javascript塊都將一個點擊處理程序附加到'jQuery(「span.fa-volume-up」)',因此(除非有一些我們不知道的黑魔法)都會單擊處理程序重新連接到這兩個元素。我不知道這是否是問題,但它看起來似乎不對。 – 2014-11-05 02:29:03

回答

0

我看不到所有的代碼,但是如果你有這個點擊事件後,HTML添加到頁面(所以,在你將代碼附加到DOM後,它應該工作。

如果沒有,你只需要使它委派事件。

$('[PARENTSELECTOR]').on('click', '[CHILDSELECTOR]', function() { 
    /* click event code here */ 
}); 
+0

@Martin Solev,也許我沒有說清楚,模態在不同的頁面中被調用(在頁面被加載後)。 – RoyS 2014-11-05 03:05:32

+1

它的工作原理! $(「div#ws_dialog」)on(「click」,「span.fa-volume-up」.....我知道事件代表團,但不是這種實現方式。非常感謝您的幫助。 Tick :) Roy – RoyS 2014-11-05 03:44:38

+0

羅伊。很高興我能幫上忙 – 2014-11-05 14:47:23

相關問題