2016-03-22 141 views
1

我從jQuery和JQuery UI開始。目前,我有一個模式對話框我已經打開包含從一個Ajax響應的iTunes元素一個問題:點擊jqueryui對話框上的事件

$.ajax({ 
    url: $url, 
    dataType: 'JSONP' 
}) 
.done(function(data) { 
    console.log(data); 
    var cuadro_itunes = "<table><tr><td>Artista</td><td>Tema</td><td>Portada</td><td>Usar</td></tr>"; 
    $.each(data.results, function(i) { 
    cuadro_itunes = cuadro_itunes+"<tr><td>"+ 
     data.results[i].artistName+"</td><td>"+ 
     data.results[i].trackName+"</td><td>"+ 
     "<img class='itunes-imagen' id='"+i+"' src='"+data.results[i].artworkUrl100+"' />"+ 
     "<input type='hidden' class='itunes-url' id='"+i+"' value='"+data.results[i].trackViewUrl+"' /></td><td>"+ 
     "<input type='button' class='itunes-select' id='"+i+"' value='Seleccionar' /></td></tr>"; 
    }); 
    cuadro_itunes = cuadro_itunes+"</table>"; 

    $("#itunes-dialog").html(cuadro_itunes); 
    $("#itunes-dialog").dialog("open"); 
}) 
.fail(function(data) { 
    console.log(data); 
}); 

的一點是,每個行元素有一個輸入按鈕標籤。現在,我要趕,只要輸入按鈕被點擊所選擇的值傳遞給父窗口:

$(".itunes-select").on("click", function() { 
    $("#itunes-dialog").dialog("close"); 
    $("body").find(".enlace#"+window.busqueda_id).val($("#itunes-dialog").find(".itunes-url#"+$(this).attr("id")).val()); 
    $("body").find(".portada#"+window.busqueda_id).val($("#itunes-dialog").find(".itunes-imagen#"+$(this).attr("id")).val()); 
    }); 

但click事件永遠不會觸發。誰能幫我?

+0

您的ids是否在整個文檔中重複? – Scimonster

+0

與這個問題無關:我建議你不要將變量連接到文本文字來組成HTML。這些變量中的數據可能會包含特殊字符,這些字符會破壞您的佈局,甚至存在安全風險(取決於源代碼)。在串聯期間使用jquery的'.text()'或html-編碼每個值。 –

回答

1

您應該添加

$(".itunes-select").on("click", function() { 
    $("#itunes-dialog").dialog("close"); 
    $("body").find(".enlace#"+window.busqueda_id).val($("#itunes-dialog").find(".itunes-url#"+$(this).attr("id")).val()); 
    $("body").find(".portada#"+window.busqueda_id).val($("#itunes-dialog").find(".itunes-imagen#"+$(this).attr("id")).val()); 
    }); 

部分阿賈克斯成功函數($。每()部分後)裏面,這應該工作。如果以這種方式進行,則將點擊事件綁定到動態生成的內容。

1

你試過這個嗎?

$(document).on("click" , ".itunes-select" , function() { 

    // Your Code Here 

}); 
0

試試這個:$(document).on("click", ".itunes-select", function(){});

您附加該點擊的方式與選定的元素有關。從jQuery文檔:「.on()方法將事件處理程序附加到jQuery對象中當前選定的元素集。」