0

我很困惑,我的头很痛,请帮助。

当元素具有“已选择”类时,我正在尝试将变量发送到 fancybox.js。这有效:

var showMe = true;

这也有效:

if(a){
  var showMe = true;
}

这会导致警告说“已选择课程”:

if($('#shuffle').hasClass('selected')){
  alert("class is selected"); 
}

我还检查了 Firebug 并选择了该类。

问题是当我这样做时它不起作用:

if($('#shuffle').hasClass('selected')){
    var showMe = true;  
}

showMe 未设置为 true。

我知道它一定很简单,在此先感谢您的帮助。

编辑这是有效的:由于某种原因,更改为选中的类没有设置 showMe = true。我向按钮添加了一个 .click 函数,它确实有效。不知道为什么,但是如果您知道我应该在哪里阅读此内容,请通过此处的链接。

$(function() {
  $("#shuffle").click(function(){

    showMe = true; 
    console.log( showMe);
  });
});

感谢所有回复的人,我猜您的答案不起作用的原因与我提出问题的方式有关。干杯

4

4 回答 4

2

通过使用var showMe = 'true',您正在设置一个局部变量。如果要在函数外部使用该变量,只需使用showMe = 'true'< 即可设置全局变量。

像这样

if($('#shuffle').hasClass('selected')){
    showMe = true;  
}
于 2013-03-08T07:43:56.590 回答
1

也许你会看看这个:

var showMe = ($('#shuffle').hasClass('selected')) ? true : false;
alert(showMe);

确保运行时 DOM 已准备就绪!

于 2013-03-08T07:28:06.303 回答
1

在文档准备好或其他任何内容之前声明您的变量。这样,您将使其全球化。

<script type="text/javascript">
    var showMe = false;
    jQuery(document).ready(function($) {
        console.log( showMe );
        if ( $('#shuffle').hasClass('selected') )
        {
            showMe = true;
            console.log( showMe );
        }
    });
</script>
于 2013-03-08T07:45:27.380 回答
0

尝试

if($('#shuffle').hasClass('selected')){
    showMe = true;  
}

我已将其移至showMe全局范围(通过删除var关键字),现在无论您在何处访问它,都可以像使用它一样使用它

if(typeof(window.showMe) != 'undefined') 
 alert(showMe);
于 2013-03-08T07:40:05.103 回答