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

尝试这个:

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

假设#myImageFlow没有从 DOM 中删除它是事件委托的一个很好的候选者。此外,您在单击处理程序中缺少event参数。

于 2013-05-27T09:00:06.213 回答
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/

委托事件方法仅将事件处理程序附加到一个元素,即 tbody,并且 > 事件只需要冒泡一个级别(从单击的 tr 到 tbody):

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