2013-10-18 61 views
1

在dinamically產生的「OL」:的JavaScript的jQuery相當於該功能

document.getElementsByTagName('ol'); 
    for (i = 0; i < len; i++){ 
      var newLi = document.createElement("li"); 
      var link = document.createElement('a'); 
      link.href = "#"; 
      link.innerHTML = (results.rows.item(i).location + "-" + results.rows.item(i).datte); 
      newLi.appendChild(link); 
      olnew[0].appendChild(newLi); 

我需要找到「麗」點擊,使用jQuery庫只爲這個功能,我尋找相同的功能在JavaScript中,但在瞬間我不知道如何我可以編碼。 thx var ss; ss = $(「#idfromOl」); ss.click(clickhecho);

} 

function clickhecho() 
{ 
    var $all_lis = $('li'); 

    $all_lis.on('click', function() { 
     var index = $all_lis.index(this); 
    }); 
} 

回答

0

我可能會誤解,但這是你在找什麼?

var elements = document.getElementsByTagName('li'); 

for (var i = 0; i < elements.length; i++) { 
    elements[i].addEventListener('click', function (e) { 
     $("#clickedLi").text(e.srcElement.id); 
    }); 
} 

它叫做追加到addEventListenerli元素的事件。

每個li元件內部,有給定爲其中包含liid點擊的參數的click事件。

演示:http://jsfiddle.net/DUzMc/1/

+0

看來user2764662試圖避免的jQuery。 – aalku

+0

這不是jquery,可以省略'text()'函數,但那不是他將要使用的,他的問題是如何確定哪個'li'被單擊而只用javascript。 'text()'僅用於將'id'顯示到示例中創建的文本框中。 – larssy1

1

試試這個:

function createfunc(i) { 
    return function() { alert(i); }; 
} 
for (i = 0; i < len; i++){ 
    var newLi = document.createElement("li"); 
    var link = document.createElement('a'); 
    link.href = "#"; 
    link.innerHTML ="test" 
    newLi.appendChild(link); 
    // just add onclick event; use createFunc to create function closure (otherwise 'i' would always be the last 'i' 
    newLi.onclick = createfunc(i); 

    olnew[0].appendChild(newLi); 
} 
+0

它工作正常,thx。沒有意義使用一個jQuery庫4行的javascript – gurrumo

0

最簡單的方法是將包括在生成列表中的事件:我使用局部變量指標,而不是

document.getElementsByTagName('ol'); 
for (i = 0; i < len; i++){ 
     var newLi = document.createElement("li"); 
     var link = document.createElement('a'); 
     link.href = "#"; 
     link.innerHTML = (results.rows.item(i).location + "-" + results.rows.item(i).datte); 

     // Add this 
     link.onclick = function(index) { return function() { 
     // do something with index variable 
     }}(i); 

     newLi.appendChild(link); 
     olnew[0].appendChild(newLi); 

注我,這是因爲當項目被點擊時,我的值將會不同(等於len)。

+1

由於關閉問題不會工作:'我'將永遠是相同的(最後一個循環值)。 –

+0

你說得對。我編輯它。謝謝R. Oosterholt。 – aalku

0

你的腳本的第一部分是不完整的,所以我做了一個簡短的腳本來生成一個動態列表。

Basicly你要找的addEventListener()

var elements = 10; 
ol = document.createElement('ol'); 
for(i = 1; i <= elements; i++){ 
    var li = document.createElement('li'); 
    var a = document.createElement('a'); 
    a.setAttribute('href', '#'); 
    a.text = 'Link ' + i; 
    li.appendChild(a); 
    ol.appendChild(li); 

    a.addEventListener("click", who, false); // THIS IS THE IMPORTANT PART 
} 

document.getElementsByTagName('body')[0].appendChild(ol); 


function who(e){ 
    var myTarget = e.target; 
    myTarget.text = "clicked!"; 
}