2014-04-28 65 views
0

我試圖將點擊事件鏈接到一個動態加載的div,但點擊事件沒有觸發。JQuery .click事件不起作用

代碼:

jQuery(document).ready(function() { 
     jQuery(document).on('click', '.subMenuItem', function() 
     { 
      alert('something'); 
        }); 
       }); 

我也都試過了。

jQuery(document).ready(function() { 
     jQuery(".subMenuItem").click(function() 
     { 
      alert('something'); 
        }); 
       }); 

PHP:

<?php 
/* Connects to the DB and grabs all SubMenuItems for the related Main Category */ 
require '/DBConnect.php'; 
$mainCategory = $_GET['MainCategory']; 

$findSubCategories = mysqli_query($connection, 'SELECT DISTINCT Sub_Category FROM Product_Master WHERE Main_Category ="' . $mainCategory . '" ORDER BY Sub_Category'); 

while ($subCategories = mysqli_fetch_array($findSubCategories)) 
{ 
    $subCategory = $subCategories['Sub_Category']; 
    echo '<div class="subMenuItem" id="' . $mainCategory . 'xx' . $subCategory . '">'; 
    echo $subCategory; 
    echo '</div>'; 
} 
?> 

AJAX產生的SubMenuBar:

    $.ajax({               
         url: '/php/SubMenuBar.php',   
         data: { 
           MainCategory: mainCategory, 
          }, 

         success: function(result) { 
          subMenuBar.html(result); 
         } 
        });  

的檢查元素說,有這個腳本的最後一行的錯誤:(undefined是不是功能):

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     jQuery(".menuItem").click(function() 
     { 
      var menuItemContent = $('#MenuItemContentWrapper');          
      var subMenuBar = $('#SubMenuBar'); 
      var mainCategory = $(this).attr('id').split('xx')[0]; 
      menuItemContent.slideUp(375); 

      if ($(this).hasClass('active')) 
      { 
       subMenuBar.slideUp(375); 
       $(this).css("background-image", "url(../PictureLibrary/NavBarShortcuts/" + this.id + ".gif)"); 
       $('.active').removeClass('active'); 
      } 
      else 
      { 
       if (subMenuBar.hasClass('active')) 
       { 
        subMenuBar.slideUp('fast', function(){ subMenuBar.slideDown(375); }); 
       } 
       else 
       { 
        subMenuBar.slideDown(375); 
       } 

       $.ajax({               
         url: '/php/SubMenuBar.php',   
         data: { 
           MainCategory: mainCategory, 
          }, 

         success: function(result) { 
          subMenuBar.html(result); 
         } 
        });     

       $(this).siblings().filter(".active") 
          .removeClass("active") 
          .each(function(i){ 
           $(this).css("background-image", "url(../PictureLibrary/NavBarShortcuts/" + this.id + ".gif)"); 
          });   

       $('.active').removeClass('active');           
       subMenuBar.addClass('active'); 
       $(this).addClass('active').css("background-image", "url(../PictureLibrary/NavBarShortcuts/" + this.id + "Active.gif)"); 
      } 
     }); 
    }); 
</script> 
+3

你的第一個例子應該用於類subMenuItem的動態加載元素。第二個不會。 – j08691

+1

第1步。粘貼您的HTML。第2步。使用'console.log()',不要像調試工具那樣濫用alert。步驟3.在步驟1和可能的2之後,我們可以更好地解決問題。 :d –

+0

@RUJordan我的HTML使用PHP和AJAX,根據以往的。點擊事件動態加載(動態地輸入基於被從數據庫加載它裏面subMenuItems的點擊次數subMenuBar) – PugsOverDrugs

回答

-1

嘗試:

jQuery(document).ready(function() { 
    jQuery(".subMenuItem").on('click',function() { 
     alert("Clicked"); 
    });   
}); 

JSFiddle

+0

這是沒有意義的,這不會與新加入的元素 –

+0

工作。並沒有真正回答這個問題。沒看過的意見。 – astex

+0

這麼多的2張底片,顯然是他明確表示,確實解決了他的問題。 – TechWiz

1

我發現這個問題。我更新了我正在導入到Google上最新版本的JQuery API。 .on()方法正在工作,對不起,這是我不認爲包括的東西,但感謝您的幫助!