【问题标题】:Trying to find a specific instance of a class by number试图按数字查找类的特定实例
【发布时间】:2011-01-12 02:49:17
【问题描述】:

我想我只是在这个问题上遇到了心理障碍;也许一些新鲜的眼睛会有所帮助。

基本上,我有一些“菜单项”类的实例,单击它们时会通过 jQuery 调用单击函数并显示视频。我没有给每个 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);
 });

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

感谢您的所有帮助!

【问题讨论】:

  • 您确定您指的是kQuery 而不是jQuery?哈哈
  • “点击了哪个类的实例”是什么意思 你是指按索引的实例吗?或者还有什么其他东西可以将它与其他 menu-item 元素区分开来?

标签: jquery arrays class instance


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 啊,是的——这就完成了。我使用了 $(even.target) ,但是是的,它就像一个魅力。谢谢!
【解决方案2】:

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

你可能是这个意思?

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

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

【讨论】:

  • 很好,但它并没有完全解决我的问题。 Yads 的文件名属性的想法很好地解决了。不过谢谢!
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多