2012-07-30 32 views
1

我有這樣的HTML:的getElementById在有序列表

<ul class="ei-slider-arrows"> 
    <li id="arrowLeft" ><img src='images/close.png'/></li> 
    <li id="arrowRight" ><img src='images/close.png'/></li> 
</ul> 

我想對我的兩個立「箭頭」添加點擊功能,但我不能選擇它們。我嘗試這樣做:

this.$arrows  = this.$el.find('ul.ei-slider-arrows'); 
this.$arrowLR = this.$arrows.children('li'); 
this.$arrowRight = this.$arrowLR.getElementById("arrowRight"); 

我可以this.$arrowLR增加一個功能,但我不能設法選擇arrowRight。 在這裏我嘗試了getElementById,但我也嘗試過get(0)get(1)

任何人都有一個想法,爲什麼它不工作?

如果我做console.log(this.$arrowRight)它只在控制檯中顯示[]get()getElementById("arrowRight"))。

+0

請張貼更多的HTML和JS - 這很難從你發佈給我們幫助的一點點。 – Utkanos 2012-07-30 16:33:20

+0

所以我用這個工作完美'這個。$ arrowRight = this. $ arrows.find('li.arrowRight img');' – 2012-07-30 17:20:09

回答

0

我會去:

$("#leftArrow").click(hazaa()); 
$("#rightArrow").click(hazaa()); 

function hazaa(){ } 

而且你還可以傳遞參數,如果你想要做的略有不同的東西,這取決於箭頭點擊。

$("#leftArrow").click(hazaa("left")); 
$("#rightArrow").click(hazaa("right")); 

function hazaa(direction){ alert(direction); } 
+0

Thx爲你的快速回答,原因是我想選擇li命名id =「arrowRight」添加一個特定的功能(相同的後爲id =「arrowLeft」)通過做你所顯示的,如果我點擊任何箭頭,它會做同樣的功能(我需要左右的幻燈片放映) – 2012-07-30 16:36:29

+0

查看更新。如果你喜歡它,請檢查綠色! – 2012-07-30 16:43:28

2

如果你想獲得他們都是由ID,然後用這個片段:

var arrowsBoth = $('#arrowLeft, #arrowRight'); 

或者,如果你想分別訪問他們:

var arrowLeft = $('#arrowLeft'); 
var arrowRight = $('#arrowLeft'); 

你也可以讓他們像這(也可能返回比期望更多的元素):

var arrows = $('ul.ei-slider-arrows li'); 
2

只要選擇由ID的元素和使用jQuery

$('#arrowLeft').click(function(){ 

}) 

$('#arrowRight').click(function(){ 

}) 
0

$("#arrowRight")和jQuery的$("#arrowLeft")應該讓你左,右箭頭事件處理程序綁定到它

。然後您可以使用on(),delegate()click()來分配處理程序。您也可以僅執行document.getElementById("arrowLeft")document.getElementById("arrowRight")來執行相同的選擇。你上面的問題之一是在this.$arrowLR.getElementById("arrowRight");你試圖在包含dom元素列表的jquery對象上使用javascript函數。

+0

問題是我有這個代碼的多個實例,我有幾個不同的幻燈片。如果我通過使用'document.getElementById(「arrowRight」)來添加這個函數,那麼每當我點擊時,該函數將會被觸發幾次以用於所有的幻燈片演示! – 2012-07-30 16:52:30

+0

@CharlieBurger你真的不應該有多個相同的ID;那是不合法的標記;編號應該是唯一的。非唯一的ID可能會導致各種瀏覽器無法行爲。如果你有多個元素,應該用類名來命名。如果使用$(「#arrowRight」)。click()該函數只應觸發觸發處理程序的元素,而不是所有類似的id元素。 – scrappedcola 2012-07-30 17:01:34

+0

是的,我不知道我是怎麼忘記的。我來自as3,我認爲這是不同的對象編譯,而不是HTML中的標籤列表! 我想我找到了一個解決方案: 'this。$ arrowRight = this。$ arrows.find('li.arrowRight img');'我發現比使用$(「something」)更清潔; 這不是完美的工作,但我到了那裏! Thx – 2012-07-30 17:19:35