在jQuery中管理span中的同级li元素

在jQuery中管理span中的同级li元素,jquery,Jquery,这是我的html(所有li和span都是动态的) 它在FF上运行良好,但在IE中不起作用(我有IE7),请首先优化我的代码,我知道这是使用jQuery的非常复杂的方法&同时告诉我如何在IE中修复ot 谢谢 更新:VMScrollBoth1也将动态推出,它可以是VMScrollBoth2或VMScrollBoth99您可以将其缩短为: jQuery('.slider-lbl1').live('click',function () { $("#VMScrollBoth1 li:not(." +

这是我的html(所有li和span都是动态的)

它在FF上运行良好,但在IE中不起作用(我有IE7),请首先优化我的代码,我知道这是使用jQuery的非常复杂的方法&同时告诉我如何在IE中修复ot
谢谢

更新:
VMScrollBoth1
也将动态推出,它可以是
VMScrollBoth2
VMScrollBoth99
您可以将其缩短为:

jQuery('.slider-lbl1').live('click',function () {
  $("#VMScrollBoth1 li:not(." + this.id +")").hide();
})​;​
,这将获取单击的元素的
id
,并在
#VMScrollBoth1
下找到任何具有该id的
  • 元素,并将其删除

    /是比只为
    display:none使用类更简单的方法:)

    这里还有一个版本可供以后点击使用:

    jQuery('.slider-lbl1').live('click',function () {
      $("#VMScrollBoth1 li").show().not("." + this.id).hide();
    });​
    

    这将显示所有的
  • 元素,然后在每次单击时再次过滤,允许您单击多个句柄,并且可见列表将每次更新。

    您可以将其缩短为:

    jQuery('.slider-lbl1').live('click',function () {
      $("#VMScrollBoth1 li:not(." + this.id +")").hide();
    })​;​
    
    ,这将获取单击的元素的
    id
    ,并在
    #VMScrollBoth1
    下找到任何具有该id的
  • 元素,并将其删除

    /是比只为
    display:none使用类更简单的方法:)

    这里还有一个版本可供以后点击使用:

    jQuery('.slider-lbl1').live('click',function () {
      $("#VMScrollBoth1 li").show().not("." + this.id).hide();
    });​
    
    这将显示所有的
  • 元素,然后在每次单击时再次过滤,允许您单击多个句柄,可见列表将每次更新。

    两个要点(我想写一条注释而不是答案,但我还不能这么做):

  • “控制台”破坏了你的IE7 javascript
  • 如果您按原样将代码复制到问题中,“.gayab{diaplay:none}”中有一个拼写错误,则diaplay而不是diSplay
  • …但请看其他答案。:)

    两个要点(我想写评论而不是回答,但我还不能这么做):

  • “控制台”破坏了你的IE7 javascript
  • 如果您按原样将代码复制到问题中,“.gayab{diaplay:none}”中有一个拼写错误,则diaplay而不是diSplay

  • …但请看其他答案。:)

    这里有一种更简单的方法,而且更安全,因为它不使用相对路径:

    jQuery('.slider-lbl1').live('click',function () {
        var handle = this.id;
        $('.VMScrollBoth').each(function() {
            $(this).toggle($(this).hasClass(handle));
        });
    });
    

    以下是一种更简单、更安全的方法,因为它不使用相对路径:

    jQuery('.slider-lbl1').live('click',function () {
        var handle = this.id;
        $('.VMScrollBoth').each(function() {
            $(this).toggle($(this).hasClass(handle));
        });
    });
    

    但我们必须显示由于上次单击而隐藏的?我们使用谁的
    this.id
    this.attr('id')
    @JustLearn-我为此添加了一个版本,请尝试下面的版本:)我如何知道结果??您的示例中根本没有图像?@JustLearn-我没有您的图像,但我使用了一个虚拟图像版本进行了更新:@thanksssssssb但我们必须显示由于上次单击而隐藏的图像?我们使用谁的
    this.id
    this.attr('id')
    @JustLearn-我为此添加了一个版本,请尝试下面的版本:)我如何知道结果??你的例子中根本没有图像?@JustLearn-我没有你的图像,但是我用一个虚拟图像版本更新了:@thankssssssssss
  • 元素在默认情况下不是
    :)@Nick:你说得对,我编辑了我的答案以使用隐藏和显示功能,而不是更改CSS显示属性。还有一个
    .toggle(bool)
    ;)另外,使用
    this.id
    ,不需要所有额外的代码来获取DOM属性:)
  • 元素在默认情况下不是
    :)@Nick:没错,我编辑了我的答案,使用隐藏和显示功能,而不是更改CSS显示属性。还有一个
    .toggle(bool)
    ;)另外,使用
    this.id
    ,不需要所有额外的代码来获取DOM属性:)