的getElementById在有序列表

问题描述:

我有这样的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

我会去:

$("#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

如果你想获得他们都是由ID,然后用这个片段:

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

或者,如果你想分别访问他们:

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

你也可以让他们像这(也可能返回比期望更多的元素):

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

只要选择由ID的元素和使用jQuery

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

}) 

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

}) 

$("#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