2012-07-04 115 views
1

我有一些jQuery的,使得鏈接,但鏈接他們應該引發更多的jQuery但他們沒有,這裏是代碼:jQuery的鏈接不工作

$(".divisionLinks").click(function() { 
    $('.show_hide_division').show(); 
    $('.show_hide_main').html($(this).html()+ " is Selected"); 
    //Load the division xml 
    var xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async="false"; 
    xmlDoc.load("xml//division//"+ $(this).html() + ".xml"); 
    theEnvNodes = xmlDoc.getElementsByTagName('ENVIRONMENT'); 
    //Make the html 
    theNewHTML = "<ul>"; 
    for (i = 0; i<theEnvNodes.length; i++){ 
    theNewHTML = theNewHTML + "<li><a class=\"environmentLinks\" href=\"#\">"; 
    theNewHTML = theNewHTML + theEnvNodes[i].childNodes[0].childNodes[0].nodeValue; 
    theNewHTML = theNewHTML + "</a></li>"; 
    } 
    theNewHTML = theNewHTML + "</ul>"; 
    $('.environmentButtons').html(theNewHTML); 
}); 
$(".environmentLinks").click(function() { 
    $('.show_hide_environment').show(); 
    $('.show_hide_division').html($(this).html()+ " is Selected"); 
}); 

所以分工環節的工作,但環境鏈接不。 我一直在閱讀它可能是jQuery索引.environmentLink類的東西。但我不知道,也不知道是否有工作。 感謝您的幫助提前。

回答

1

必須使用例如:

$(".environmentLinks").live('click', function() { 
    $('.show_hide_environment').show(); 
    $('.show_hide_division').html($(this).html()+ " is Selected"); 
}); 

或:

$("body").on('click', ".environmentLinks", function() { 
    $('.show_hide_environment').show(); 
    $('.show_hide_division').html($(this).html()+ " is Selected"); 
}); 
+0

['live()'](http://api.jquery.com/live/)被**棄用**,讀取API。早於jQuery 1.7 ['委託()'](http://api.jquery.com/delegate/)應該使用,並在1.7 + ['on()'](http://api.jquery.com/on /)應該被使用。 –

+0

謝謝,live()工作,但on()沒有 –

+0

您歡迎,我在'.on()'例子中犯了小錯誤,我編輯了它:) –

0

it's因爲環境鏈接稍後產生的點擊功能被綁定到DOM,我想。

試試這個:

$(".environmentLinks").live("click", function(){ 

$('.show_hide_environment').show(); 
$('.show_hide_division').html($(this).html()+ " is Selected"); 
}); 

這將 「刷新」 自己的點擊事件。

1

由於您正在動態添加.environmentLinks,因此您所擁有的點擊事件沒有被附加,因爲加載頁面時這些鏈接不存在。如果您使用的是最新版本的jQuery,請使用.on()將click事件綁定到.environmentLinks鏈接。

$("body").on('click', '.environmentLinks', function() { 
    $('.show_hide_environment').show(); 
    $('.show_hide_division').html($(this).html()+ " is Selected"); 
}); 

理想情況下,你想那是比身體元素更接近它的.environmentLinks父元素替換$(「身體」)。

事件處理程序僅綁定到當前選定的元素;在代碼調用.on()時,頁面上必須存在 。 要確保元素存在並且可以選擇,請在頁面上的HTML標記中的 HTML標記中對元素執行文檔就緒處理程序內的事件 綁定。如果新頁面被注入頁面, 選擇元素並附加事件處理程序,當新的HTML被放置到頁面中時,頁面中的內容爲 。或者,使用委託事件來附加處理程序事件 ,如下所述。