Javascript 如何在jQuery选择器中更改全局变量?

Javascript 如何在jQuery选择器中更改全局变量?,javascript,jquery,Javascript,Jquery,我正在开发一个使用jQuery的网站。在这段代码中,我需要更改jQuery选择器中变量的值,并在其之后获取更改后的值。是否可以这样做?我如何实现?如果可能,可以向我展示一段代码片段/示例代码 我尝试过将变量声明为全局变量,但也没有成功 var index; $(document).ready( function(){ $("#myButton1").click(function(){ //selector number 1 index = 1; });

我正在开发一个使用jQuery的网站。在这段代码中,我需要更改jQuery选择器中变量的值,并在其之后获取更改后的值。是否可以这样做?我如何实现?如果可能,可以向我展示一段代码片段/示例代码

我尝试过将变量声明为全局变量,但也没有成功

var index;
$(document).ready( function(){

    $("#myButton1").click(function(){ //selector number 1
        index = 1;
    });

    $("#myButton2").click(function(){//selector number 2
        index = 2;
    });

    //after, i need the value of the index for another selector
    //look this next selector is fired at the same time as the previous one!

    $("button[id^=myButton"+index+"]").click( function(){  //selector number 3
        ...
    }
}

如何使选择器编号1或2在选择器编号3之后触发?是否可能?

Javascript异步执行代码。换句话说,整个代码“同时”执行。因此,首先,它将执行
var索引。由于jQuery
.click
正在等待您单击该按钮,因此它将跳过这两个
。单击
功能并转到警报。由于索引是未定义的,它将显示
index=undefined
。要解决此问题,请将警报移动到
中。单击
功能,以便在单击按钮后执行警报

var指数;
$(“#按钮1”)。单击(函数(){
指数=1;
警报(“索引=”+索引);
});
$(“#按钮2”)。单击(函数(){
指数=2;
警报(“索引=”+索引);
});

单击其中一个按钮时发生的事情是在单击处理程序函数中定义的(请参阅):

对alert()的调用驻留在ready函数中,因此仅在加载页面时调用。您需要将警报放在单击处理程序中,以将其称为“on click”。这样,所有三个版本都应该可以工作。应该是这样的:

$("#button1").click(function(){
    index = 1;
    alert(index);
});
编辑后:

这里也是一样:在页面加载时,在单击任何按钮之前,会创建注释后的选择器字符串。从那以后再也没有了。 此时,它的计算结果为
“button[id^=myButtonundefined]”
,因为索引尚未定义值。T####是函数。每当您单击ID以未定义的MyButton开头的按钮时,将执行该函数-可能永远不会

需要在click handler函数中执行的
index
值。e、 g:

$(document).ready( function(){

    $("#button1").click(function(){
        $("button[id^=myButton1]").click( function(){ 
            ...
        });
    });

    $("#button2").click(function(){
        $("button[id^=myButton2]").click( function(){ 
            ...
        });
    });
}
或者您可以尝试以下方法,在所有
myButton…
上安装一个单击处理程序,并在其中检查相应的
按钮…
之前是否已单击过:

var index;
$(document).ready( function(){

    $("#button1").click(function(){
        index = 1;
    });

    $("#button2").click(function(){
        index = 2;
    });

    //after, i need the value of the index for another selector:

    $("button[id^=myButton]").click( function(){ 
        if (this.id == 'myButton'+index) {
            ...
        }
    }
}
如何在jQuery选择器中更改全局变量

在本例中不要使用全局变量。您有可能与任何其他代码(jQuery或您使用的任何其他脚本)发生变量冲突。您只需将
索引
放在您的文档中,并在示例代码中使用它,它就可以正常工作,不会发生任何冲突

$(文档).ready(函数(){
var指数;
$(“#按钮1”)。单击(函数(){
指数=1;
});
$(“#按钮2”)。单击(函数(){
指数=2;
});
//之后,我需要另一个选择器的索引值:
$(“按钮[id^=myButton”+索引+”])。单击(函数(){
});
$('.js getcurrentvalue')。在('单击',函数()上){
$('#currentvalue').val(索引);
});
});





你能创建一个新的变量=索引,然后修改并提醒该变量吗?相关帖子:我已经重新表述了我的问题,请看一下。这似乎是一个错误。提供一个更高层次的解释,说明你需要完成什么,以及足够的html来创建一个变量。我已经重新制定了我的问题,请看一看。jQuery
。单击你拥有的函数确实会更改变量索引。只是在你给索引任何值之前,警报就会执行。Idk如何做到这一点,但假设您以某种方式添加了5秒的等待时间,并在这5秒之前单击按钮将索引更改为1,则警报将显示
index=1
我已更新我的解决方案。请看第二个片段。我想这应该能更好地解释这一点。我已经重新制定了我的问题,请看一看。对我来说很好。更新了一点你的例子。我理解了发生的事情。当你点击一个按钮时,button2说,它将2属性为de“index”变量。但同时,选择器$(“button[id^=myButton”+index+“]”)单击(function(){});激发。所以,两个都是同时执行的。我需要第二个选择器始终在第一个选择器之后执行。你知道我如何才能做到这一点吗?我已经更新了我的问题。我已经阅读了你的答案,我看到我们在按钮的名称上存在分歧。看一看。“button1”实际上是“myButton1”,而“Button2”实际上是“myButton2”。我编辑了原始帖子,所以现在我们可以清楚地看到“选择器编号3”与“选择器编号1”或“选择器编号2”相同,但写的方式不同。现在,我的问题是,是否可能是同一个选择器,调用了两次,在其中一个通话中,可能会比另一个先触发一点。有可能吗?
var index;
$(document).ready( function(){

    $("#button1").click(function(){
        index = 1;
    });

    $("#button2").click(function(){
        index = 2;
    });

    //after, i need the value of the index for another selector:

    $("button[id^=myButton]").click( function(){ 
        if (this.id == 'myButton'+index) {
            ...
        }
    }
}