jqueryui对话框上的点击事件

click event on jqueryui dialog

我从 jQuery 和 Jquery UI 开始。目前,我打开的模态对话框存在问题,其中包含来自 ajax iTunes 响应的元素:

$.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);
});

重点是每个行元素都有一个输入按钮标签。现在我想在单击输入按钮时捕获以将所选值传递给父级 window:

$(".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() );
  });

但是一直没有触发点击事件。谁能帮帮我?

你试过了吗?

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

    // Your Code Here

});

您应该添加

$(".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() );
  });

ajax 成功函数内的部分(在 $.each() 部分之后),这应该可以工作。如果这样做,您将点击事件绑定到动态生成的内容。

试试这个:$(document).on("click", ".itunes-select", function(){});.

您附加点击的方式与当时选定的元素有关。来自 jQuery 文档:"The .on() method attaches event handlers to the currently selected set of elements in the jQuery object."