jQuery - 点击功能不会触发

时间:2013-10-13 18:07:10

标签: javascript jquery

每次点击我的ID时,我都会遇到触发函数的问题。目前,这是我的代码的样子:

    $(document).ready(function () {


    if (self != top) {
        top.location.replace(location.href);
    }
    $(document).mousedown(function (e) {
        if (e.button == 2) {
            console.log('mousdown');
            $(window).blur();
        }
    });
    $(document).mouseup(function (e) {
        if (e.button == 2) {
            console.log('mousup');
            $(window).blur();
        }
    });

    var $iframe_height = $(window).innerHeight() - 90;
    $('iframe').attr('height', $iframe_height + 'px');
    $(window).resize(function () {
        var $iframe_height = $(window).innerHeight() - 90;
        $('iframe').attr('height', $iframe_height + 'px');
    });

    $('.message').html('<div class="alert alert-warning">Waiting for advertisement to load...</div>');
    $('.close').on('click', function () {
        window.open('', '_self', '');
        window.close();
    });
    var $seconds = 5;
    var $window_width = $(window).innerWidth();
    var $width_per_second = $window_width / $seconds;
    var $timer = null,
        $current_second = 0;

    setTimeout(function () {
        if ((!$('body').hasClass('done')) && (!$('body').hasClass('blocked')) && (!$('body').hasClass('ready'))) {
            $('body').addClass('ready');
            $('.message').html('<div class="alert alert-info">Click <b id="start" style="cursor:pointer;text-decoration:underline;">here</b> to start viewing this advertisement.</div>');
        }
    }, 3000);
    document.getElementById("website").onload = function () {
        if ((!$('body').hasClass('done')) && (!$('body').hasClass('blocked')) && (!$('body').hasClass('ready'))) {
            $('body').addClass('ready');
            $('.message').html('<div class="alert alert-info">Click <b id="start" style="cursor:pointer;text-decoration:underline;">here</b> to start viewing this advertisement.</div>');
        }
    };

    $("#start").click(function () {
        $('#website').focus();
        $('.message').html('<div class="alert alert-info"><b id="seconds">' + parseFloat($seconds - $current_second) + '</b> seconds remaining (do not leave this page).</div>');
        if ($timer !== null) return;
        $timer = setInterval(function () {
            if ($current_second == $seconds) {
                clearInterval($timer);
                $('.message').html('<div class="alert alert-success">Checking if you won, please wait&hellip;</div>');
                var $id = 10977;
                var $reffbux_fp = new Fingerprint();
                var $reffbux_fp = $reffbux_fp.get();
                $.ajax({
                    url: 'http://reffbux.com/account/register_roulette',
                    type: 'post',
                    data: {
                        id: $id,
                        fp: $reffbux_fp
                    },
                    success: function (result, status) {
                        $('html, body').animate({
                            scrollTop: 0
                        }, 500);
                        $('body').addClass('done');
                        $('.melding').fadeOut(0).fadeIn(500);
                        $('.message').html(result);
                        $('.counter_bar').addClass('done');
                    }
                });
                return false;
            } else {
                var $counter_bar_width = $('.counter_bar').innerWidth();
                $('.counter_bar').css('width', parseFloat($counter_bar_width + $width_per_second).toFixed(2));
                $current_second++;
                $("#seconds").text(parseFloat($seconds - $current_second));
            }
        }, 1000);
    });
    $('body').mouseleave(function () {
        if ((!$(this).hasClass('done')) && (!$(this).hasClass('blocked')) && ($(this).hasClass('ready'))) {
            $('.message').html('<div class="alert alert-error">You navigated away from the advertisement. Click <b id="start" style="cursor:pointer;text-decoration:underline;">here</b> to resume.</div>');
            clearInterval($timer);
            $timer = null
        }
    });

});

加载iframe内容时,系统会生成id="start"的文字。问题是,每当我点击id="start"时都没有任何反应。没有。在我点击之前,控制台日志不会报告任何错误,也不会在我点击后报告任何错误。

我似乎无法找到问题所在。

1 个答案:

答案 0 :(得分:5)

您必须使用jquery on将事件绑定到动态创建的元素。

$('.message').on('click', '#start', function(){

.message#start元素所在的元素。