2

我有一个函数,调用时会加载一个外部 css 文件。该文件为视障人士生成高对比度版本的网站。单击图像按钮时,我可以调用此函数。

现在我需要的是能够在第二次单击同一个按钮时重新加载页面。此重新加载有效地删除了包含的 css,并使站点恢复正常。

我找不到任何代码可以让我单击图像按钮一次以调用一个函数,然后再次单击同一个图像按钮以执行另一个操作。

我之前试图问这个问题,但被告知我没有问过问题。我希望以上内容很清楚,如果您需要进一步澄清,请询问。

4

7 回答 7

1

您可以创建一个全局变量并在第一次单击并加载 CSS 时$.clicked存储true 。

在你的函数中,你总是检查全局变量的值,然后定义从那里采取什么行动。

看:

$(document).ready(function(){
    $.clicked = false;

    $("#loadCSS").click(function(e){
        if ($.clicked){
            // action to be taken to remove the CSS loaded
            $.clicked = false;
        } else {
            // action to be taken to load the CSS
            $.clicked = true;
        }
    });
});

我希望它可以帮助你

于 2013-10-02T01:01:39.960 回答
1

我认为你可以做这样的事情。

<img src= "..." onclick ="Mymethod();" alt="Imagename"/>


var IsCalledOnce = false;

function Mymethod()
{
 if(IsCalledOnce)
{
  //do something
}else
{
 //do something
}

IsCalledOnce = true;
}

如果第一次没有刷新,您可以将值保存在全局变量范围内,并在所有其他时间刷新。

如果您想将该值保留更长时间,您可以使用以下任何一种

1. HTML5网络存储

2.饼干

3.隐藏场

4.数据库(通过ajax调用保存)

于 2013-10-02T00:57:23.110 回答
0

您可以设置一个全局变量:

jQuery(document).ready(function () {

    $('#test').click(function () {
        test();
    });

});

var calledonetime = false;

function test()
{
    if(calledonetime=== false)
    {
        calledonetime = true;
        alert('first time');
    }else
    {
        alert('second time');
    }

}

因此,第一次单击时,它将执行第一个操作,然后执行第二个操作。

这是一个例子

于 2013-10-02T00:56:00.383 回答
0

试试这个

在 HTML 中

<a><img id="test" src="temp5.jpg" /></a>

在 .js 中

$(document).ready(function()
{
var action = 1;

    $("#test").click(function()
    {
    if ( action == 1 ) {
            $("#div2").css('display','block');
            action = 2;
        } else {
            $("#div3").css('display','block');
            action = 1;
        }
    });


    });
于 2014-08-06T17:29:14.120 回答
0
<button id="button">click me</button>
<div id="thing">default</div>

function first() {
    $('#thing').html("first");
}

function second() {
    $('#thing').html("second");
}


$('#button').on("click", function () {
    first();
    $(this).on("click", function () {
        second();
    });
});

http://jsfiddle.net/stevemarvell/xxJBH/

如果您想记住用户重新加载后的状态,那么您希望将其存储在 cookie 或类似的东西中。

于 2013-10-02T00:59:11.227 回答
0

我为自己做了这个:

function zo(f1, f2){
  this.n = 0;
  this.z = function(){
    if(this.n === 0){
      f1(); this.n = 1;
    }
    else{
      f2(); this.n = 0; 
    }
  }
}
var whatever = new zo(function(){/*do stuff*/}, function(){/*do stuff*/});

请记住this您将要在whatever.

Element.onclick = function(){
  whatever.z.call(whatever);
}
于 2013-10-02T00:58:43.933 回答
0

这是简单而有用的。

flag = true ;
function myFunction() {
document.getElementById("demo").innerHTML = flag ? "Second paragraph" : "First paragraph";
flag = !flag
}
<p id="demo">First paragraph</p>
<button onclick="myFunction()">click me</button>

注意:“标志”可以更改。

于 2021-06-10T17:30:24.633 回答