单击更改按钮颜色

时间:2013-04-26 16:23:04

标签: javascript jquery htmlbutton

我想知道是否有可能达到以下情况:

我在html表单中输入了类型按钮(假设按钮在此实例中该颜色为红色),当您单击它以执行ajax调用(并显示div)时,其颜色将为也变成了绿色。它应该保持这种状态,直到它再次点击它会变回原来的颜色并隐藏上面提到的div。

这种方法适用于所有浏览器(包括IE)?此外,它是否可能在第三次点击后跳过ajax调用?很抱歉我现在无法提供代码示例,(目前我无法访问我的笔记本电脑)。

这是困扰我的事情,任何建议都非常受欢迎。

5 个答案:

答案 0 :(得分:1)

我认为这应该有用 - 所以你有HTML

<input id="clickIt" type="button">Click here</input>
<div id="AJAXDiv">

</div>

然后是jQuery

timesClicked = 0;
$('input#clickIt').click(function() {
    if($(this).hasClass('makeItGreen') {
        $(this).removeClass('makeItGreen')
    }
    else { $(this).addClass('makeItGreen'); }
    if(timesClicked === 0) {
        $('div#AJAXDiv').load('myurl.php');
    }
    else if(timesClicked % 2 === 0) {
        $('div#AJAXDiv').hide();
    }
    else {
        $('div#AJAXDiv').show();
    }
    timesClicked++;
});

答案 1 :(得分:1)

如果你只想在第一次点击时加载AJAX(我假设你的意思是在第三次点击后没有加载:加载和显示,隐藏,显示等等),只需使用{{1 }}。然后,使用.one()进行其余的点击处理:

.on()

JSFiddle Demo

答案 2 :(得分:0)

当您拨打.ajax请求时,它会为您提供“状态”。查看:http://api.jquery.com/jQuery.ajax/

跟踪用户点击按钮的次数,如果超过三次,请不要调用ajax请求。

 if(clicked < 3){
  .ajax(...)
 }

答案 3 :(得分:0)

为什么不加载一次ajax而不是按钮呢?

HTML:

<input type="button" value="Show / hide" class="btn_normal" />
<div class="content">Loading...</div>

CSS:

.btn_normal { background-color: red; }
.btn_selected { background-color: green; }
.content { display: none; }

JavaScript的:

$(function() {

    // Load AJAX once
    $(".content").load("MY_FILE.aspx");

    // Do the button stuff
    $(".btn_normal").click(function() {
        $(this).toggleClass("btn_selected");
        $(".content").stop(true, true).slideToggle();
    });

});

编辑:

或者如果你真的需要加载ajax三次:

JavaScript的:

var clickCount = 0;
$(function() {

    // Do the button stuff
    $(".btn_normal").click(function() {
        clickCount++;

        if (clickCount == 1 || clickCount == 3 || clickCount == 5) {

            // Load AJAX
            $(".content").load("MY_FILE.aspx");

        }

        $(this).toggleClass("btn_selected");
        $(".content").stop(true, true).slideToggle();
    });

});

答案 4 :(得分:0)

我不是计算点击量的忠实粉丝。在这种情况下,我通常使用类的存在来指示元素的状态。这是我的解决方案,可在a fiddle中找到。

var asyncData = false;

$('.hiddenDiv').hide();

$(".clickBtn").click( function(evt) {
    if ( $(this).hasClass('btnWorking') ) {
        $(this).removeClass('btnWorking');
        $('.hiddenDiv').hide();
    } else {
        $(this).addClass('btnWorking');
        $('.hiddenDiv').show();
        if (!asyncData) {
            $.ajax({
                url: '/echo/html/',
                data: {
                    html: '<p>This is the ajax HTML</p>',
                    delay: 2
                },
                method: 'post'
            }).done( function(data) {
                asyncData = data;
                $('.hiddenDiv').append(data);
            });
        }
    }
});