如何在 jQuery 选择器中使用 JavaScript 变量?

IT技术 javascript jquery
2021-02-05 07:13:40

如何在 jQuery 选择器中使用 JavaScript 变量作为参数?

<script type="text/javascript">
$(function(){    
  $("input").click(function(){
    var x = $(this).attr("name");

    $("input[id=x]").hide();    
  });    
});
</script>

<input type="text" id="bx"/><input type="button" name="bx"/>
<input type="text" id="by"/><input type="button" name="by"/>

基本上我想要做的是能够隐藏元素id的名称等于被点击的元素的名称。

6个回答
var name = this.name;
$("input[name=" + name + "]").hide();

或者你可以做这样的事情。

var id = this.id;
$('#' + id).hide();

或者你也可以产生一些效果。

$("#" + this.id).slideUp();

如果要从页面中永久删除整个元素。

$("#" + this.id).remove();

您也可以在此使用它。

$("#" + this.id).slideUp('slow', function (){
    $("#" + this.id).remove();
});
美丽的。您正在获得书签!
2021-03-11 07:13:40
IE 11 不喜欢这个,$('#' + id).hide();,它说它是未定义的。
2021-03-16 07:13:40
需要注意的是,用于连接的变量必须是非数字的,因此如果 id 是数字,则执行 toString() 。
2021-03-29 07:13:40
$(`input[id="${this.name}"]`).hide();

当您使用 ID 时,这会表现得更好

$(`#${this.name}`).hide();

我强烈建议您通过单击按钮来更具体地隐藏元素。我会选择使用数据属性。例如

<input id="bx" type="text">
<button type="button" data-target="#bx" data-method="hide">Hide some input</button>

然后,在你的 JavaScript 中

// using event delegation so no need to wrap it in .ready()
$(document).on('click', 'button[data-target]', function() {
    var $this = $(this),
        target = $($this.data('target')),
        method = $this.data('method') || 'hide';
    target[method]();
});

现在,您可以通过 HTML 完全控制要定位的元素以及对它执行的操作。例如,您可以使用data-target=".some-class"data-method="fadeOut"淡出一组元素。

$("input").click(function(){
        var name = $(this).attr("name");
        $('input[name="' + name + '"]').hide();    
    });   

也适用于 ID:

var id = $(this).attr("id");
$('input[id="' + id + '"]').hide();

当,(有时)

$('input#' + id).hide();

不工作,因为它应该

您甚至可以同时执行以下两项操作:

$('input[name="' + name + '"][id="' + id + '"]').hide();
var x = $(this).attr("name");
$("#" + x).hide();

$("#" + $(this).attr("name")).hide();