Jquery:变量作为 ID 选择器不起作用

发布于 2024-11-03 22:54:11 字数 910 浏览 0 评论 0原文

好的,这是我的代码:

$tabularID = 0;
$('a.swfselector').live('mouseover', function(event) {
            $tabularID= $(this).parent().attr('id');
            $(this).parent().children().not(this).find('.tab').each(function() {
                      $(this).fadeTo(100, 0.4)
            })
            $(this).find('.tab').each(function() {
                      $(this).fadeTo(100,1)
            })

    });
$('#' + $tabularID).live('mouseleave', function(event) {
            alert($tabularID);
            $(this).children().find('.tab').each(function() {
                      $(this).fadeTo(100,1)
            })

    });

Jquery 不喜欢这个选择器:

$('#' + $tabularID)

尽管如果我将其更改为:

$('#27')

它会很好地提醒我的变量 $tabularID ,所以我知道这不是错误的变量( $tabularID 的输出是 27 ) 。我在这里需要一个变量,因为父 ID 会根据鼠标悬停的位置而变化。

任何人都可以看到我看不到的东西吗?也许真的很明显。

Ok here is my code:

$tabularID = 0;
$('a.swfselector').live('mouseover', function(event) {
            $tabularID= $(this).parent().attr('id');
            $(this).parent().children().not(this).find('.tab').each(function() {
                      $(this).fadeTo(100, 0.4)
            })
            $(this).find('.tab').each(function() {
                      $(this).fadeTo(100,1)
            })

    });
$('#' + $tabularID).live('mouseleave', function(event) {
            alert($tabularID);
            $(this).children().find('.tab').each(function() {
                      $(this).fadeTo(100,1)
            })

    });

Jquery doesn't like this selector:

$('#' + $tabularID)

Although if I change it to:

$('#27')

It alerts my variable $tabularID just fine, so I know it isn't the variable that is wrong (Output of $tabularID is 27). I need a variable here because the parent ID changes depending on which they mouseover.

Anyone can see what I can't? probably really obvious.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

楠木可依 2024-11-10 22:54:11

您的 ID 必须以字母 az 或 AZ 开头。

此代码 $('#' + $tabularID) 仅在第一次运行时受到影响。这意味着您的 $tabularID = 0。

当您将鼠标悬停在其上时,只会更新 $tabularID 值,但不会更新对此对象 $('#' + $tabularID) 事件的绑定

我认为您可以像这样更改代码:

$tabularID = 0;
$('a.swfselector').live('mouseover', function(event) {
            $tabularID= $(this).parent().attr('id');
            $(this).parent().children().not(this).find('.tab').each(function() {
                      $(this).fadeTo(100, 0.4)
            })
            $(this).find('.tab').each(function() {
                      $(this).fadeTo(100,1)
            })

            $('#' + $tabularID).live('mouseleave', function(event) {
                alert($tabularID);
                $(this).children().find('.tab').each(function() {
                      $(this).fadeTo(100,1)
                })

            });

    });

Your ID must begin with a letter a-z or A-Z.

This code $('#' + $tabularID) is only affected at the first time you run it. It means your $tabularID = 0.

When you mouse over it only update the $tabularID value, but it will not update the binding to event of this object $('#' + $tabularID)

I think you can change your code like this:

$tabularID = 0;
$('a.swfselector').live('mouseover', function(event) {
            $tabularID= $(this).parent().attr('id');
            $(this).parent().children().not(this).find('.tab').each(function() {
                      $(this).fadeTo(100, 0.4)
            })
            $(this).find('.tab').each(function() {
                      $(this).fadeTo(100,1)
            })

            $('#' + $tabularID).live('mouseleave', function(event) {
                alert($tabularID);
                $(this).children().find('.tab').each(function() {
                      $(this).fadeTo(100,1)
                })

            });

    });
甜味超标? 2024-11-10 22:54:11

我经常在选择器中使用变量。这样一切对我来说都很好。只是避免使用“123”之类的 ID。 ID 命名规则:

  • 必须以字母 AZ 或 az 开头
  • 后面可以是:字母(A-Za-z)、数字(0-9)、连字符(“-”)、下划线(“_”)、冒号(“ :") 和句点 (".")
  • 值区分大小写

I often use variables in selectors. And all works fine for me this way. Just avoid using IDs like '123'. ID naming rules:

  • Must begin with a letter A-Z or a-z
  • Can be followed by: letters (A-Za-z), digits (0-9), hyphens ("-"), underscores ("_"), colons (":"), and periods (".")
  • Values are case-sensitive
时光无声 2024-11-10 22:54:11

我在使用 jQuery 时也遇到过这个问题。但发现常规 JavaScript DOM 可以处理以数字开头的 ID(如果这就是问题所在)。在这种情况下,这可能没有帮助,但可能值得考虑的是,更改该代码段是否比更改 ID 的设置方式更容易。

document.getElementById(tabularID)

请注意,开头不需要“#”。

有关 document.getElementById 的详细信息

I've also encountered this problem with jQuery. But found out that regular JavaScript DOM can handle ID's that start with numbers, if that's the problem. This might not help in this case, but it might be worth looking at if it is easier to change that piece of code, rather than changing how your ID's are set up.

document.getElementById(tabularID)

Note that you don't need '#' in the beginning.

More info on document.getElementById

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文