2016-03-22 11 views
1

jQueryとJquery UIから始めます。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); 
}); 

ポイントは、各行の要素は、入力ボタンタグを持っていることである。現在、私は、私は、AJAX iTunesの応答からの要素が含まれている開いたモーダルダイアログに問題があります。

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

しかし、クリックイベントがトリガされることはありません。今、私は、入力ボタンが親ウィンドウに選択された値を渡すためにクリックされるたびにキャッチしたいです。誰でも助けてくれますか?

+0

idsが文書全体で繰り返されていますか? – Scimonster

+0

質問には関係ありません:HTMLを構成するために変数をテキストリテラルに連結しないことをお勧めします。これらの変数のデータに潜在的にレイアウトを破るか、セキュリティリスクをかける特殊文字(ソースに応じて)がある可能性があります。連結中にjqueryの '.text()'を使用するか、各値をhtmlエンコードしてください。 –

答えて

1

あなたは($の.each()の部分の後に)アヤックス成功関数内

$(".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イベントをダイナミックに生成されたコンテンツにバインドします。

1

これを試しましたか?

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

    // Your Code Here 

}); 
0

お試しください:$(document).on("click", ".itunes-select", function(){});

クリックをアタッチする方法は、選択した要素と関連しています。 jQueryドキュメントから: ".on()メソッドは、jQueryオブジェクト内の現在選択されている要素のセットにイベントハンドラを添付します。