试图按编号查找类的特定实例

时间:2011-01-12 02:49:17

标签: jquery arrays class instance

我想我刚刚用这个打了个精神障碍;也许一些新鲜的眼睛会有所帮助。

基本上我有一些类“menu-item”的实例,当点击它时通过jQuery调用click函数并调出一个视频。我没有给每个人提供一个id和一个类,而是试图找到该类的哪个实例被点击(1,2,3等)。 但似乎无法得到它。

//click listener for menu-items
 $('.menu-item').click(function(event)
 {
      var o = $('.menu-item');
      var count = o.length();                    

     switch(count)
     {
      case 0 :
       filename == 'letters';
      break;
      case 1 :
       filename == 'the-gift';
      break;
     }

  var videoPlayer = '<video controls  width="618px">';
  videoPlayer += '<source src="_video/' + filename + '.mp4" />';
  videoPlayer += '</video>';

  //place video   
  $('#videoCont').html(videoPlayer);
 });

我正在尝试创建一个数组,其中'menu-item'的每个实例都是一个数组项。 (顺便说一句,现在我只是在添加ogv和webm格式之前使用mp4文件类型进行校对)。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您似乎实际上没有为变量filename分配值。您只是将变量的值与硬编码字符串进行比较,而不是将其(true / false)分配回任何内容。

可能你的意思是这个?

switch(count)
{
  case 0 :
    filename = 'letters';
    break;

  case 1 :
    filename = 'the-gift';
    break;
}

答案 1 :(得分:1)

除了@ p.campbell的解决方案。我不确定你的代码是如何工作的。

var o = $('.menu-item')

将始终返回相同数量的项目,即具有menu-item作为类的项目数。为什么不将类似文件名的属性设置为适当的值。像这样

<li class='menu-item' filename='letters'>Letters</li>

然后在你的点击处理程序中你可以做

var filename = $(this).attr('filename');