JQuery seçicilerinde JavaScript değişkenleri nasıl kullanılır?


160

JavaScript değişkenlerini bir jQuery seçicide parametre olarak nasıl kullanabilirim?

<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"/>

Temel olarak yapmak istediğim, idtıklanan öğenin adına eşit olan bir öğeyi gizleyebilmektir .

Yanıtlar:


243
var name = this.name;
$("input[name=" + name + "]").hide();

VEYA böyle bir şey yapabilirsiniz.

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

VEYA bazı efektler de verebilirsiniz.

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

Tüm öğeyi kalıcı olarak kaldırmak istiyorsanız sayfayı oluşturun.

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

Bu konuda da kullanabilirsiniz.

$("#" + this.id).slideUp('slow', function (){
    $("#" + this.id).remove();
});

2
Birleştirmek için kullanılan değişkenin sayısal olmaması gerektiğine dikkat etmek önemlidir, bu nedenle id bir sayı ise toString () işlevini kullanın.
isync

IE 11 bunu sevmiyor, $ ('#' + id) .hide () ;, tanımsız olduğunu söylüyor.
Welshboy

55
$(`input[id="${this.name}"]`).hide();

Bir kimlik kullandığınız için bu daha iyi performans gösterir

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

Düğme tıklamaları ile öğeleri gizleme yaklaşımınıza daha belirgin olmanızı tavsiye ederim. Bunun yerine veri özniteliklerini kullanmayı tercih ederim. Örneğin

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

Ardından, JavaScript'inizde

// 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]();
});

Artık HTML aracılığıyla hangi öğeyi hedeflediğinizi ve ona ne olacağını tamamen kontrol edebilirsiniz. Örneğin, kullanabilirsiniz data-target=".some-class"ve data-method="fadeOut"fade-out elemanların bir koleksiyon.


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

Ayrıca ID ile çalışır:

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

ne zaman, (bazen)

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

olması gerektiği gibi çalışmıyor .

Her ikisini de yapabilirsiniz:

$('input[name="' + name + '"][id="' + id + '"]').hide();



2
  1. ES6 Dize Şablonu

    IE / EDGE desteğine ihtiyacınız yoksa basit bir yol

    $(`input[id=${x}]`).hide();

    veya

    $(`input[id=${$(this).attr("name")}]`).hide();

    Bu, şablon dizesi adı verilen bir es6 özelliğidir


  1. Dize Birleştirme

    IE / EDGE desteğine ihtiyacınız varsa

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


  1. DOM'da veri özelliği olarak seçici

    Gerçekten KURU kodladığınız için bu benim tercih ettiğim yol

    // HTML
    <input type="text"   id="bx" />
    <input type="button" data-input-sel="#bx" value="1" class="js-hide-onclick"/>
    
    //JS
    $($(this).data("input-sel")).hide();

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.