0

让这个简单的 if/else 工作有点问题。

$(document).ready(function () {
    $(".sme").click(function (event) {

        var vote = $(this).attr('id');
        $('.to').html(vote);

        $(".sme").removeClass('clicked');
        $(this).addClass('clicked');
    });
});


$(document).ready(function () {
    $(".tme").click(function (event) {

        var more = $(this).attr('id');
        $('.more').html(more);


        if (typeof vote) {

            $('.error').html("ERRRROOORRRR");

        } else {

            $(".tme").removeClass('clicked');
            $(this).addClass('clicked');

        }

    });
});

在使 if/else 工作时遇到问题。

任何帮助都会很棒,谢谢!

4

2 回答 2

2

vote将始终是undefined因为它不在您的点击处理程序函数的范围内.tme。我想你想要这样的东西:

$(document).ready(function () {
    var vote = undefined;

    $(".sme").click(function (event) {

        vote = $(this).attr('id');
        $('.to').html(vote);

        $(".sme").removeClass('clicked');
        $(this).addClass('clicked');
    });

    $(".tme").click(function (event) {

        var more = $(this).attr('id');
        $('.more').html(more);


        if (vote === undefined) {

            $('.error').html("ERRRROOORRRR");

        } else {

            $(".tme").removeClass('clicked');
            $(this).addClass('clicked');

        }

    });
});
于 2013-05-31T01:04:21.267 回答
1

voteclick事件处理程序的局部变量。您不能在另一个事件处理程序中调用它,它不会存在。

为什么要使用两个document ready处理程序?只用一个。我会做这样的事情:

<script type="text/javascript">
$(document).ready(function() {
    $(".sme").click(function (event) {

        window.vote = $(this).attr('id');
        $('.to').html(window.vote);

        $(".sme").removeClass('clicked');
        $(this).addClass('clicked');
    });

    $(".tme").click(function (event) {

        var more = $(this).attr('id');
        $('.more').html(more);

        // Two cases. If it's undefined will throw error. The same if it is a string, but its length equals to zero.
        if ( typeof window.vote == undefined || window.vote.length == 0 ) {

            $('.error').html("ERRRROOORRRR");

        } else {

            $(".tme").removeClass('clicked');
            $(this).addClass('clicked');
        }
    });
});
</script>
于 2013-05-31T01:04:11.883 回答