2011-06-01 193 views
2

我想通過點擊一個鏈接增加JavaScript中的變量,它的作品第一次,但其後每隔一次,如果我點擊它,一旦它會顯示3次,然後4,5等等。 控制檯的屏幕截圖: enter image description hereJavaScript增加一個變量

在藍色(右)如預期中的數字,沒有什麼不對的,但你可以在左側看到,每一行是一個點擊。第一個日誌很好,但它記錄了三次,然後是四次。

這是做這項工作的代碼。

$('.here').live('click', function(eve) { 
    eve.preventDefault(); 

    var curpop = $(this).attr('rel') 
    ++curpop 
    $('.pop').html(curpop); 

    console.log(curpop) 
}) 

$(this).attr('rel')只是一個數字(藍色,右,中圖片)一旦你點擊它的目的是增加數量的鏈接。

感謝您的幫助。

編輯:我已成立的jsfiddle同樣的事情,但它似乎在那裏工作,和所有的建議,仍然沒有對我的項目工作,即使他們應該。

<h4 class='left'>Click 
<a class="here" href="#" rel="1">here</a></h4> 
<h4 class='right'> 
    <span class='pop'> 
     1 
    </span> 
</h4> 

這是HTML,現在有多種的這些,但是通過AJAX加載,我猜測,這將有事可做與類的多個實例沒有標識將它們分開?

更多修改 正如我懷疑問題是與所述「之類的多個實例,沒有識別符將它們分開」,所以我剛製成每一個這樣的:

<span id="<?php echo $thereID; ?>_span" class='pop'> 
    1 
</span> 

然後

$('#' + thereID + '_span').html(curpop);

感謝所有幫助

+1

請向我們展示_all_代碼,最好是演示。 – SLaks 2011-06-01 03:00:25

+0

這裏不夠回答你的問題哥們。 – stefgosselin 2011-06-01 03:05:40

+2

使用'.html()'命令,你是否在使用'.here'類重新創建某個東西,這會導致多次綁定'.live()'方法? – Orbling 2011-06-01 03:05:51

回答

1

需要查看更多的代碼,但通常我會看到JS初學者將事件添加到事件中。換句話說,每次鏈接被點擊時,都會添加另一個事件處理程序。

無論如何,這裏有一個單擊處理程序增加計數器的例子:http://jsfiddle.net/GSuSk/

0
<a href="#" id="link">GO UP</a> 
<p>0</p> 
<script> 
    $('#link').click(function(){ 
      var v=$('p').text(); 
      $('p').text(+(v)+1); 
    }); 
</script> 

你爲什麼不嘗試這種方法的?看here演示

0

不確定這個有限的代碼量,但如果我沒有弄錯,我認爲一個問題是變量是在現場創建,真的應該初始化外面,以便它只需要抓住它一次,然後從那裏增加,而不必每次都獲取新值。這是我重新安排的方式。 http://jsfiddle.net/robx/nDbb8/1/

+0

,當然你可以用你將要使用的任何東西替換選擇器;) – robx 2011-06-01 04:11:37

0
<script type="text/javascript"> 

    $(function(){ 

      $('.here li a').click(function(){ 
       var current = parseInt($(this).attr('rel')); 
       var inc = current + 1; 
       console.log(inc); 
       $(this).attr('rel',inc); 
       }); 
    }); 
    </script> 

    <div > 
    <ul class='here'> 
    <li><a href='#' rel="1">one</a></li> 
    <li><a href='#' rel="10">two</a></li> 
    <li><a href='#' rel="37">three</a></li> 
    <li><a href='#' rel="1">four</a></li> 

    </ul> 

    </div> 

我不認爲你需要在這裏直播功能......關鍵是要使用parseInt函數,因爲它是被評價爲一個字符串投rel屬性的當前值... - )