2014-01-26 49 views
4

menu中填入/插入jsonObjects[i].typediv稱爲#changetotypes。我得到的值r,cejsonObjects[i].type在菜單中,知道我想能夠點擊值的值爲r,ce並將值更改爲點擊值。知道我可以點擊一個對象,它顯示值rce。 因此,如果我點擊一個對象,它會在該對象所具有的菜單中獲取/顯示值jsonObjects[i].typerce。知道如何將我單擊的對象值示例從r更改爲c如何在點擊時更改對象值?

<li> 
    <a href="#">Typs</a> 
     <ul> 
      <li> 
       <a href="#"><span id="currenttype" title=""></span></a> 
       <ul id="changetotypes"></ul> 
      </li> 
     </ul> 
</li> 

function populateTypes() { 

    for(i = 0; i < jsonObjects.length; i++) { 

     if(availableTypes.indexOf(jsonObjects[i].type) < 0) { 

      availableTypes.push(jsonObjects[i].type); 
      $("#changetotypes").append('<li><a href="#">' + jsonObjects[i].type + '</a></li>'); 
     } 
    } 
} 
+0

你是否想要實現這樣的目標? [jsFiddle](http://jsfiddle.net/GKDev/73UyJ/2/) – Givi

+0

@Givi嗨!類似於你的代碼是的......我無法讓你的代碼工作,它說ele(ele.insertAdjacentHTML(「afterbegin」,str);)爲空。但是在你的工作代碼中就是這樣的。 –

+0

製作你自己的jsFiddle,我會看看它。 – Givi

回答

0

您可以嘗試以下類似(jsFiddle)。假設jsonObjects來自其他地方。

function populateTypes() { 
    var availableTypes = []; 
    for(var i = 0; i < jsonObjects.length; i++) { 
     if(availableTypes.indexOf(jsonObjects[i].type) < 0) { 
      availableTypes.push(jsonObjects[i].type); 
      $('<li><a href="#">' + jsonObjects[i].type + '</a></li>') 
      .data('type', jsonObjects[i].type) 
      .on('click', function(){ $('#currenttype').text($(this).data('type')); }) 
      .appendTo('#changetotypes'); 
     } 
    } 
} 

在這裏,當我們創建一個特定類型的< LI/>元素,我們在改變的currenttype元素的文本同時添加一個單擊處理。

我們存儲我們想要改變currenttype在我們< LI/>元素的數據類型,所以我們不必擔心closures in the loop,但也有其他的方法來解決這個問題,以及像創建函數返回一個函數(見鏈接)或使用< a/>元素的內容(如$('a',$(this)).text())中的內容。

+0

有點小代碼修改,它的工作... –

+0

太棒了。對於未來的觀衆來說,這個答案應該改變嗎?還是僅僅爲了解決這個問題而忽略了其他代碼? – Avalanche

+0

答案與我的其他代碼有關...再次感謝 –

0

您需要爲每個#changetotypes子項添加一個click事件偵聽器,然後更改該子項的內部html。

您可能需要爲每個孩子提供一個ID,以瞭解如何獲得每個孩子的參考。

希望它有幫助。

+0

嗨!謝謝,我要試試你的建議。 –

+0

這是否適合你? – PaulNunezM

+0

不,但謝謝你的建議... –