jQuery变量不能与if / else一起使用

时间:2013-05-31 00:54:39

标签: jquery

如果/或其他方法可以解决这个问题。

$(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工作时遇到问题。

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

2 个答案:

答案 0 :(得分: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');

        }

    });
});

答案 1 :(得分: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>