将参数传递给函数会影响同一函数的先前调用

时间:2015-04-12 00:00:47

标签: javascript jquery

我在JavaScript中遇到了一个问题,我试图寻找一个解决方案,但我想我只是不知道我正在寻找什么 - 因为我无法找到问题的答案我和#39; m在这里寻求帮助:

我有两个JavaScript函数,它们应该通过添加一个overlay div并将光标的css状态更改为加载,然后恢复正常来模拟ajax调用上的加载页面:

function LoadMouse(ths){
    if($("#overlay").length==0){
        $("body").css({"cursor":"wait"});
        $(ths).css({"cursor":"wait"});
        $("body").append(\'<div id="overlay"></div>\');    
    }
    else{
        return false;
    }
}

function AutoMouse(ths,Cursor){
    if (typeof Cursor === "undefined"){ Cursor = "auto"; }
    $("body").css({"cursor":Cursor});
    $(ths).css({"cursor":Cursor});
    $("#overlay").remove();  
}

在我的代码中,我在各个地方从jQuery调用此函数,例如:

function doFirstThing(){
    $(document).on("click",".element1",function(){
        var This = $(this);
        LoadMouse(This);

       //do stuff

       AutoMouse(This);
    });
}

function doSecondThing(){
    $(document).on("click",".element2",function(){
        var This = $(this);
        LoadMouse(This);

       //do stuff

       AutoMouse(This,"pointer");
    });
}

想法是如果element2首先在css中有一个指针光标 - 我希望它再次成为一个指针。

现在说我在element2上调用该函数 - 它工作并且光标变为指针但是当我单击element1时,光标对于element1和元素2都变为auto,如果我单击元素3它将更改为元素1 ,2和3等。我该如何解决这个问题?

(顺便说一句,我改变了身体和元素上的css,因为当我只为身体尝试它时,它不会在元素本身上改变)。

编辑:

回应关于html的评论:它只是一个简单的标签:

<a href="javascript:void" class="elemen1">click here</a>
<a href="javascript:void" class="elemen2" style="cursor:pointer;">click here 2</a>

当我单击元素2并运行我的LoadMouse按钮将2参数传入其中时,在检查chrome中的元素时会发生以下情况:

步骤1 :(当LoadMouse()运行时):

<a href="javascript:void" class="elemen2" style="cursor:wait;">click here 2</a>

第2步:(当AutoMouse()运行时):

<a href="javascript:void" class="elemen2" style="cursor:pointer;">click here 2</a>

但是当我点击元素1后,第二个元素内联css也受到了影响:

步骤1 :(当LoadMouse()运行时):

<a href="javascript:void" class="elemen1" style="cursor:wait;">click here</a>
<a href="javascript:void" class="elemen2" style="cursor:wait;">click here 2</a>

第2步:(当AutoMouse()运行时):

<a href="javascript:void" class="elemen1" style="cursor:auto;">click here</a>
<a href="javascript:void" class="elemen2" style="cursor:auto;">click here 2</a>

0 个答案:

没有答案