2016-03-31 21 views
1

Değişkenlerde depolanan HTML öğelerinin özniteliklerini dinamik olarak ayarlamak için jQuery'yi kullanmak zaten var mı? Örneğin, uygulamamın bir noktasında, bir kullanıcı değişen sayıda giriş alanı oluşturur. PHP tarafından nihai işlem için, elemanların name='input'+siteNumber+'['+x+']' biçiminde adlandırılması gerekir; burada x, for döngüsünde oluşturulan elemanların sayısıdır.değişkenlerde saklanan öğelerin niteliklerini ayarlama

İşte benim düşünmem gereken şeylerin kaba bir taslağı - BU FONKSİYONEL KOD DEĞİLDİR, SADECE BİR İLLÜSTRASYON OLDU.

$(".number_select").change(function(){ 
    numberFound = $(this).val(); 
    siteNumber = $(this).parent().attr('data-site_number'); 
    //HERE'S THE INPUT TO BE NAMED 
    selectInput = "<select></select>"; 

    this['inputArray' + siteNumber] = []; 

    for(x = 1; x <= numberFound; x++){ 
     //THIS IS WHAT I'D LIKE TO ACCOMPLISH - SETTING THE ATTRIBUTE - THOUGH THIS UNDERSTANDABLY DOES NOT WORK IN THIS PARTICULAR FORMAT   
     this['inputArray' + siteNumber].push(selectInput.attr("name", "species"+siteNumber+"["+x+"]")); 
    }; 

    $(this).parent().append(this['inputArray' + siteNumber]); 
}; 

Teşekkür ederiz.

+1

İşlevsel olmayan bir kod yazıp yazamayacağınızı düşünün, bunun yerine adım adım veya pseudocode yazmalısınız. – ggderas

+1

Gerçek bir jquery nesnesi öğesi oluşturursanız, özniteliklere müdahale edebilirsiniz. – scrappedcola

cevap

1

herkese teşekkürler - Aslında farklı bu biraz işlemek için karar sona erdi, ancak mükemmel çalışıyor - ziyade değişkenlerde elemanları saklanmaz, bunun yerine bir işlev ...

function inputs(siteNumber, x){ 
    return ("<select name='selectInput"+siteNumber+"["+x+"]'>"+list+"</select>"); 
}; 

$(".number_select").change(function(){ 
    numberFound = $(this).val(); 
    siteNumber = $(this).parent().attr('data-site_number'); 

    this['inputArray' + siteNumber] = []; 

    for(x = 1; x <= numberFound; x++){ 
     this['inputArray' + siteNumber].push(inputs(siteNumber, x)); 
    }; 

    $(this).parent().append(this['inputArray' + siteNumber]); 
}; 

yapmayın kullanılan Bunu neden ilk başta düşünmediğimi biliyorum, şu an açık gözüküyor. Ah, yaşa ve öğren.

0

Sorunuzu belirsiz bir şekilde yanıtlamak için, dinamik olarak bir öğe oluşturabilir ve jQuery'nin attr numarasını kullanarak ad özniteliğini kolayca ayarlayabilirsiniz. İhtiyacınız gibi seçkin kutusu oluşturmak ve seçme kutusu sahiptir hangisi eklemesi yerine #wrapper eklemeden arasında, Senin durumunda

<select name="add-name-here"> 
    <option value="some-value">Option</option> 
</select> 

verir

var select = $('<select>').attr('name', 'add-name-here'); 
 

 
$('<option>').attr('value', 'some-value').text('Option').appendTo(select); 
 

 
$('#wrapper').html(select);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    
 
<div id="wrapper"></div>

değişim? Özel kullanım durumunuzdan emin değilsiniz. Umarım yardımcı olur.

İlgili konular