为什么这个'$(...)。触发器(“click”)'在这个函数(jQuery)中没有工作?

时间:2011-11-11 04:44:15

标签: jquery

单击链接时,以下功能会打开一个弹出窗口:

function popupPlace(dict) {
    $popup = $('div#dish-popup');
    $popup.render(dict,window.dishPopupTemplate);
    if(typeof(dict.dish) === 'undefined') {
        $popup.addClass('place-only');
    } else {
        $popup.removeClass('place-only');
    }

    var $place = $('div#dish-popup div.place');
    var place_id = dict.place._id;
    if(liked[place_id]) {
        $place.addClass('liked');
    } else {
        $place.removeClass('liked');
    }
    if(dict.place.likes) {
        $place.addClass('has-likes');
    } else {
        $place.addClass('zero-likes');
    }


    var tokens = window.currentSearchTermTokens;
    var tokenRegex = tokens && new RegExp($.map(tokens, RegExp.escape).join('|'), 'gi');
    $.each(dict.place.products, function(n, product) {
        $product = $('#menu-item-'+product.id);
        if(liked[place_id+'/'+product.id]) {
            $product.addClass('liked');
        }
        if(tokens && matchesDish(product, tokens)) {
            $product.addClass('matched');
            $product.highlight(tokenRegex);
        } else {
            $product.removeClass('matched');
            $product.removeHighlight();
        }
        if(product.likes) {
            $product.addClass('has-likes');
        } else {
            $product.addClass('zero-likes');
        }
    });

    $('#overlay').show();
    $('#dish-popup-container').show();

    // Scroll to matched dish
    $("a#scrolll").attr("href", "#" + $("li.matched").attr("id"));
    $("a#scrolll").trigger("click");

    // Hide dish results on mobile devices to prevent having a blank space at the bottom of the site
    if (Modernizr.mq('only screen and (max-width: 640px)')) {
        $('ol.results').hide();
    }

    $(".close-dish-popup").click(function() {
        $("#overlay").hide();
        $("#dish-popup-container").hide();
        $('ol.results').show();
        changeState({}, ['dish', 'place', 'serp']);
    });

    showPopupMap(dict.place, "dish-popup-map");
}

最后,您可以看到以下内容:

    $("a#scrolll").trigger("click");

一切正常,但弹出窗口出现后,该链接不会被触发:

    $('#dish-popup-container').show();

有任何解决此问题的建议吗?

2 个答案:

答案 0 :(得分:3)

在将click事件分配给关闭按钮之前,在分配 $("a#scrolll").trigger("click");之前调用 $('#dish-popup-container').show();。 只需将函数的$(".close-dish-popup").click();放在函数的顶部或函数的顶部(在调用它之前)

答案 1 :(得分:1)

$(".close-dish-popup").click(function() {
    $("#overlay").hide();
    $("#dish-popup-container").hide();
    $('ol.results').show();
    changeState({}, ['dish', 'place', 'serp']);
});

在$(文件)。已经在

的一边
function popupPlace(dict) {

你试图调用它,但是在你调用它时它没有被初始化