English 中文(简体)
理解点击行为
原标题:understanding clicks behaviour
  • 时间:2011-09-29 15:09:25
  •  标签:
  • jquery

I wrote this simple code to understand why if I click the "click me" text for the second time JQuery does not display the "second" text.

<div id="clickme">Click me</div>
<div id="sometext">This is text ZERO</div>

<script type="text/javascript"> 
    $(document).ready(function($) {

        $("#clickme").click(function(){ 
            if (a == 1) {
                $( #sometext ).replaceWith( <div id="sometext">This is text TWO</div> );
            }
            else {
                $( #sometext ).replaceWith( <div id="sometext">This is text ONE</div> );
                var a = 1;
            }
        });

    });
</script>

我期望以下行为:

  1. Page is loaded and the text This is text ZERO is displayed
  2. I click the link the first time and JQuery displays This is text ONE
  3. I click the link a second time and jQuery displays This is text TWO

相反,第3点没有处理,或者至少没有显示案文。 为什么?

最佳回答

It is a scope issue as mentioned above, the variable a must be defined in the scope of the page, not the click event.

$(document).ready(function($) {
    var a = 0;

    $("#clickme").click(function() {
        if (a == 1) {
            $( #sometext ).replaceWith( <div id="sometext">This is text TWO</div> );
            a = 0;
        }
        else {
            $( #sometext ).replaceWith( <div id="sometext">This is text ONE</div> );
            a = 1;
        }
    });
});

http://jsfiddle.net/d5xSH/

问题回答

Because a is defined locally, it is a scope issue. Initialize a globally and it will work. See Below

$(document).ready(function($) {
   var a = 0;
   $("#clickme").click(function(){ 
     if (a == 1) {
       $( #sometext ).replaceWith( <div id="sometext">This is text TWO</div> );
     }
     else {
       $( #sometext ).replaceWith( <div id="sometext">This is text ONE</div> );
       a = 1;
     }
   });
});

这里是一个dle

rel=“nofollow”>http://jsfiddle.net/jfhartsock/Khp7P/1/





相关问题
getGridParam is not a function

The HTML: <a href="javascript:void(0)" id="m1">Get Selected id s</a> The Function: jQuery("#m1").click( function() { var s; s = jQuery("#list4").getGridParam( selarrrow )...

selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

jQuery cycle page with links

I am using the cycle plugin with pager functionality like this : $j( #homebox ) .cycle({ fx: fade , speed: fast , timeout: 9000, pager: #home-thumbs , ...

jquery ui dialog opens only once

I have a button that opens a dialog when clicked. The dialog displays a div that was hidden After I close the dialog by clicking the X icon, the dialog can t be opened again.

jConfirm with this existing code

I need help to use jConfirm with this existing code (php & Jquery & jAlert). function logout() { if (confirm("Do you really want to logout?")) window.location.href = "logout.php"; } ...

Wrap text after particular symbol with jQuery

What I m trying to do, is wrap text into div inside ll tag. It wouldn t be a problem, but I need to wrap text that appears particularly after "-" (minus) including "minus" itself. This is my html: &...

热门标签