如何应用.one()不适用于每个对象

时间:2014-02-19 09:40:45

标签: javascript jquery html

我在完成某项任务时遇到了一些困难。我有以下代码

$(document).ready(function() {
    var Result = 0;
    var stop_process = false;
    $('img').click(function(){
            if( !stop_process ){
                if( $(this).hasClass( 'home' ) ){
                        stop_process = true;
                $('body').append('<div class="message">Your Result is: </div>' + Result);
            }
            if( $('img.home').length == 0 )
                        $(this).addClass('home');

            var $elem1 = $(this).parent();
            var $elem2 = $('span.last');
            $(this).toggleClass('selected');
                if ($elem2.length > 0) {
                        connect($elem1[0], $elem2[0], "#0F0", 5);
                } else { 
                $elem1.addClass('last');
            }
            $('span').removeClass('last');
            $elem1.addClass('last');
        Result++;
        }
    });

我想禁止第二次点击,这样我就会有一个完整的圆圈,并且我已经浏览了所有对象一次。如果我申请.one()我得到了我想要的东西,但我无法完成圆圈,因为主页对象仍然无法点击。有什么方法可以解决这个问题吗?将.one()应用于每个对象,而不是“home”对象?

提前致谢!

整个代码:

http://jsfiddle.net/N2Pdc/

2 个答案:

答案 0 :(得分:0)

尝试使用jQuery off,您可以在其周围构建if语句来帮助您实现此目的。存储在您点击的第一个元素的变量中,并有一个计数器,这样您就可以确保在以前单击所有其他元素时只能单击第一个对象(关闭圆圈)。

答案 1 :(得分:0)

如果您想使用 .one ,可以使用jQuery过滤器:not(),例如$(body:not(.home))