有没有办法使用JS变量作为输入而不是jquery选择器“#id”?

时间:2010-11-02 10:00:49

标签: javascript jquery jquery-selectors

我想知道,我们能否在选择器内提供变量而不是#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 个答案:

答案 0 :(得分:4)

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

如果您遇到jquery使用问题,那么jquery api文档非常出色。

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

答案 1 :(得分:3)

我相信你的问题只是一个错字。您的ID为#aDiv123#abcd1234的元素,但尝试删除#aDiv1234。纠正这个并且它会起作用。

答案 2 :(得分:2)

问题是你的Div与段落的编号不同,应该是:

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

不是:aDiv123

答案 3 :(得分:1)

$ JQuery函数只接受参数的字符串,因此您可以构建自己的选择器,并传递一些变量。

var sel = tag + ':visible';
$(sel) -> all visible "tags"

答案 4 :(得分:0)

如果你想对包含段落的div进行操作,为什么不这样做:

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

......或......

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