代码之家  ›  专栏  ›  技术社区  ›  user405398

是否有任何方法可以将JS变量用作输入而不是jquery选择器“id”?

  •  0
  • user405398  · 技术社区  · 15 年前

    我想知道,我们能不能给一个变量而不是 #anyId 在选择器中。

    实际上我正在尝试这个代码,

    <html>
    <head>
      <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    </head>
    <body>
    <div id="aDiv123">
      <p id="abcd1234" class="abcd123">Click me!</p>
    </div>
    
    <script>
        $("p").live("click", function() {
            $(this).after("<p id='abcd123' class='abcd2323'>Another paragraph!</p>");
            var number = this.id.match(/^abcd(\d+)$/)[1];
            var iD = this.id;
            alert(number);
            alert(iD);
            var div = "#"+"aDiv"+number;
            alert(div)
            $(div).remove();
        });
    </script>
    
    </body>
    </html>
    

    这是 fiddle link 对于上述代码。

    关于我在哪里做错的任何建议!!!!!

    谢谢!

    5 回复  |  直到 15 年前
        1
  •  2
  •   abatishchev Karl Johan    15 年前

    问题是您的DIV与段落的编号不同,应该是:

    <div id="aDiv1234">
    <p id="abcd1234">
    

    不是:ADIV123

        2
  •  4
  •   James Gaunt    15 年前

    是的,您可以使用一个变量,假定它包含一个有效的jquery选择器字符串,或者一个对dom元素的引用,或者对另一个jquery对象的引用。

    如果您一直在使用jquery,那么jquery API文档是非常好的。

    http://api.jquery.com/jQuery/

        3
  •  3
  •   NOtherDev    15 年前

    我相信你的问题只是打字错误。您有带有ID的元素 #aDiv123 #abcd1234 ,但尝试删除 #aDiv1234 . 纠正这个问题,它就可以工作了。

        4
  •  1
  •   MatTheCat    15 年前

    $jquery函数只接受一个参数字符串,因此您可以通过一些变量构建自己的选择器。

    var sel = tag + ':visible';
    $(sel) -> all visible "tags"
    
        5
  •  0
  •   wombleton    15 年前

    如果要对包含段落的DIV执行操作,为什么不执行以下操作:

    $('p').live('click', function() {
      $(this).parent().remove();
    });
    

    …或者…

    $('p').live('click', function() {
      $(this).parents('.discriminator').remove();
    });