2012-08-14 12 views
11

Bu 3 öğeden tüm veri değerlerini almanın bir yolu var mı?HTML5'te birden çok veri- {name} özelliğine sahip olmak mümkün mü?

<div id="viewport" 
    data-requires='js/base/paths' 
    data-requires='js/base/dialog' 
    data-requires='js/base/notifier'> 

Bu, başlattığım bir proje için gerçekten yararlı olur. Bununla gerekli js modüllerini yükleyebilir ve bunları dom'a bağlayabilirim. Garip gelebilir, biliyorum ama burada yeni bir şey deniyorum.

+2

Sen

<div id="viewport" data-requires='js/base/paths' data-requires='js/base/dialog' data-requires='js/base/notifier'> 

bunu yapabilirsin veri-gerektirir anlamına gelir. Bunu yapabileceğini sanmıyorum. Neden hepsini bir araya getirmiyorsun? data-require = 'js/base/paths | js/base/dialog | js/base/notifier' –

+0

Sanırım hepsini bir araya getirmeyeceğim. 3 tane talep yazmanın tek nedeni, ekibine katılan yeni devlerin güzel görünmesiydi. –

+0

Evet, bu –

cevap

3

Onları bir şeyle ayırıp sonra ayırıp bir Array içine koyduysanız hepsini bir arada tutabilirsiniz.

// oops here's plain JS 
var arrayData = document.getElementById('viewport').getAttribute('data-requries'); 
var arr = arrayData.split(','); 

for (i = 0; i < arr.length; i++) { 
    console.log(arr[i]); 
} 

http://jsfiddle.net/S7D2D/1/

16

Sorunuzun cevabı HTML, aynı özellik birden çok örneğini desteklemez olmasıdır. Bu özelliği alabileceğiniz tüm tipik yollar, yalnızca bu üçten birini alır.

Bu sorunu çözmenin genel yolu, özniteliğin tek bir örneğini kullanmak ve değer olarak birden çok yol koymaktır. Yollar için, genellikle yarı-kolonlarla ayrılırlar.

<div id="viewport" data-requires='js/base/paths;js/base/dialog;js/base/notifier'> 

Ve sonra çok değerli özniteliği bir diziye ayırmak için kod kullanın.

var requiredPaths = document.getElementById("viewport").getAttribute("data-requires").split(";"); 
+0

'u yapabilmemiz güzel olurdu. Bu yöntem, aşağıdaki gibi birden fazla veri seçeneğine izin vermek için Foundation dropdowns ile çalışır: 'data-options =" ​​is_hover: true; align: right "'. Teşekkürler, bunu başka bir yerde nasıl yapacağımı bulamadım. – lwalden

7

Sen data- nitelikleri içerisinde daha karmaşık yapılar kullanabilirsiniz. Bunun yerine

:

<div id="viewport" 
data-requires='["js/base/paths", "js/base/dialog", "js/base/notifier"]'> 
</div> 

Kanıtı (sadece Array bu şekilde alır ki: jQuery('#viewport').data('requires')) jQuery.data() kullanılarak: buradadır: muhtemelen http://jsfiddle.net/3StZs/

+0

Herhangi bir tarayıcı varsa, bu konuda endişe duyarsınız… –

+0

@rohit_wason: Neden bu konuda endişe duyuyorsunuz? Bu teknik yıllardır etraftadır ve büyük olasılıkla tarayıcı olmayan tarayıcılar desteklenmektedir (ilk olarak, artık kullanılmamasına rağmen, jQuery sürümü bunları desteklemelidir). Bununla ilgili özel bir endişeniz var mı? jQuery çok eski tarayıcılarla oldukça uyumlu görünüyor, eğer sizinki çok daha büyükse, bunu desteklemek için jQuery'nin daha eski bir sürümünü kullanmanız gerekebilir. – Tadeck

+0

Orijinal yorumim gerçekte birden çok özellik kullanıyordu. Soruyu tamamen okudum sanmıyorum. Şimdi görüyorum. –

İlgili konular