2015-04-07 95 views
1

得到以下問題問題寬度jQuery: 在一個站點ary many div具有相同類的容器稱爲「stackgo」,但具有不同的數據附加。例如:jQuery/kill不再需要時的實例

<div class=\"stackgo\" data-an=\"HEY\" data-ms=\"HO\" data-me=\"HM\"></div> 

我寫了一些jQuery的代碼傳送到一個後按摩適用於PHP的文件,將鼠標指針應在其上點擊時徘徊在div容器上方時改變,併發送後按摩:

$('div.stackgo').hover(function() { 
    document.body.style.cursor = "pointer"; 
    $('div.stackgo').on('click', function() { 
     var stackgo = $(this); 
     var an = stackgo.data('an'); 
     var ms = stackgo.data('ms'); 
     var me = stackgo.data('me'); 

      if (an != '') { 
      $.post('../../AJAX/schreibmaterialnei.php', {an: an, ms: ms, me: me}, function(data) { 
      }); 
      } 

     stackgo.html(''); 
     stackgo.html('<img src="../../img/OK_Sign.png">'); 
     stackgo.show("pulsate",500); 
     alert (an + " - " + ms + " - " + me); 
    }); 
}, function() { 
    document.body.style.cursor = "default"; 
}); 

對不起,我討厭寫和格式化代碼,這是我的第一個步驟:(

現在以下問題: 在第一次點擊DIV-集裝箱,一切都很順利。但在點擊第二個Div容器後,每一個Click函數內部的東西將被執行兩次。我點擊的Container越多,「Click」功能就會被執行。 (可以看到Alert-Windows的大量數據,並在數據庫中進行管理(由schreibmaterialnei.php管理)。與舊值不同,總是與新值相同,就像我總點擊數一樣多。

似乎就像它通過每一個實例這類「stackgo」咔嗒過程中取得了。

如何控制呢?我是絕對不知道:(

我會任何幫助

+1

只需更改$('div.stackgo')。on('click',function(){TO $(this).on('click',function(){。它可能工作 –

+0

謝謝!已經提到了;-) –

回答

0

dgig是正確的。每次將鼠標懸停在元素上時,都會將另一個事件綁定到每個$('div.stackgo')。

如果您重構代碼略低於:

$('div.stackgo').on('click', function() { 
      var stackgo = $(this); 
      var an = stackgo.data('an'); 
      var ms = stackgo.data('ms'); 
      var me = stackgo.data('me'); 

       if (an != '') { 
       $.post('../../AJAX/schreibmaterialnei.php', {an: an, ms: ms, me: me}, function(data) { 
       }); 
       } 

      stackgo.html(''); 
      stackgo.html('<img src="../../img/OK_Sign.png">'); 
      stackgo.show("pulsate",500); 
      alert (an + " - " + ms + " - " + me); 
    }); 
    $('div.stackgo').hover(function() { 
     document.body.style.cursor = "pointer"; 
    }); 

應該給你,你想要的結果。僅供參考,您需要確保在運行此腳本之前加載了div標籤。

1
非常感謝

我想只要你懸停,你就會綁定另一個「點擊」你的div.stackgo。我敢打賭,你會發現即使沒有點擊,如果你只需幾次鼠標懸停/鼠標移動,然後單擊,就會看到相同的效果。

解決方案是檢查是否有任何已經綁定的點擊,並且在綁定click事件之前返回false或將懸停之外的「click」綁定完全移除。

+0

這是一個偉大的點!我沒有提到那個觀點!感謝你和BSimpson的大力幫助! –

相關問題