2

ここで私のコードでは、次のものに置き換える.liveと機能し.onませんか? 問題を特定できません。

$(document).ready(function () {
    /*   Reading the data from XML file*/
    $.ajax({
        type: "GET",
        url: "photos.xml",
        dataType: "xml",
        success: function (xml) {
            $(xml).find('item').each(function () {
                var path = $(this).attr('path');
                var width = $(this).attr('width');
                var height = $(this).attr('height');
                var id = $(this).attr('id');
                var alt = $(this).attr('alt');
                var longdesc = $(this).find('longdesc').text();
                var description = $(this).find('desc').text();
                $('#myImageFlow').append('<img src="' + path + '" id=' + id + '  height="' + height + '"  width="' + width + '" longdesc="' + longdesc + '" alt="' + alt + '"/>');
                imgArr[i] = description;
                imgFront[i] = longdesc;
                i = i + 1;
            });

            $(xml).promise().done(function () {
                console.log("image completed loading");
                $('img:lt(4)').removeClass('t2').addClass('t1');
                $('img:gt(3)').removeClass('t1').addClass('t2');
                $('img#id12').removeClass('t1').addClass('t2');
                $('img#id1').removeClass();


                //alert('Front Initial Text is'+imgFront[1]);
                window.setTimeout(function () {

                    $("#front").html(imgFront[1]);
                    $("#front").css("background", "gray");
                }, 1500);
            });
        }
    });
    $.getScript('js/code.photoswipe.jquery-3.0.5.js');
});

/*front div called when front or back is called */
$('#front').live('click', function (event) {
    event.stopPropagation();
    transitIt(this);
    //  alert('Front Clicked glob   e='+globe);
});


$('#myImageFlow img').on("click", function () {
    event.stopPropagation();
    alert('htmlcalled image Clicked Called=' + clickEnabled);
}); 
4

4 に答える 4

1

委任が適切に定義されていない可能性があります。

$('#myImageFlow').on("click", 'img', function(event) {
    event.stopPropagation();
    alert('htmlcalled image Clicked Called=' + clickEnabled);
});

が DOM から削除されていないと仮定すると#myImageFlow、イベント委任の良い候補になります。eventまた、クリック ハンドラにパラメータがありませんでした。

于 2013-05-27T09:00:06.213 に答える
1

これを試して:

$('body').on('click', '#myImageFlow img', function() {
    // your code
});

参考文献:

  • .on()- jQuery API ドキュメント
于 2013-05-27T08:55:59.330 に答える
1

これを試して -

$('#myImageFlow').on("click", "img", function(event) 
{
    event.stopPropagation();
    alert('htmlcalled image Clicked Called='+clickEnabled);
});

また

$('html').on("click", "#myImageFlow img", function(event) 
{
    event.stopPropagation();
    alert('htmlcalled image Clicked Called='+clickEnabled);
});
于 2013-05-27T09:00:53.753 に答える
0

コンソール ウィンドウからの出力はありますか?

.on の (イベント) がないことに気付きました。

それに加えて、 on 関数はバブリングを使用して機能させます。したがって、最初から存在する DOM ツリーの一部を使用し、クリック可能にしたいその DOM ツリーの子を括弧内に配置します。

http://api.jquery.com/on/

委譲イベント アプローチでは、イベント ハンドラーを 1 つの要素 (tbody) のみにアタッチし、 > イベントは 1 レベル (クリックされた tr から tbody まで) バブルアップするだけで済みます。

$("#dataTable tbody").on("click", "tr", function(event){
  alert($(this).text());
});
于 2013-05-27T08:59:51.953 に答える