2012-06-15 3 views
4
function getDbValue() 
{ 
    alert($('[data-bind]').length); 
    alert($('[data-bind][0].data-bind')); 
    alert($('[data-bind][0].value')); 
    jQuery.each($('[data-bind]'), function(databind,key) 
    { 
     alert(key); 
     alert(databind); 
     alert(databind[key].data-bind); 
    }) 

} 

Выше моя функция, и я хочу, чтобы прочитать все материалы, которые имеют свойства данных привязку в них, напримерПопадая Все значения данных Bind Использование JQuery

<input type="text" id="frmIn1-Officer" data-bind="value: AOfficer" class="InputText"/> 

^При выполнении моей функции I хотел бы, чтобы он возвращал «AOfficer», поскольку это значение привязки данных.

Так примером может служить

<input type="text" id="frmIn1-Officer" data-bind="value: AOfficer1" class="InputText"/> 
<input type="text" id="frmIn1-Officer" data-bind="value: AOfficer2" class="InputText"/> 
<input type="text" id="frmIn1-Officer" data-bind="value: AOfficer3" class="InputText"/> 
<input type="text" id="frmIn1-Officer" data-bind="value: AOfficer4" class="InputText"/> 
<input type="text" id="frmIn1-Officer" data-bind="value: AOfficer5" class="InputText"/> 
<input type="text" id="frmIn1-Officer" data-bind="value: AOfficer6" class="InputText"/> 

И в течение каждого цикла я хотел бы иметь возможность использовать значение привязки данных .. например, значения [0] = «AOfficer1»

Извините, если мое объяснение немного запутанно, у меня есть идея в моей голове, но попытка написать ее в письменной форме намного сложнее.

+0

вы пробовали Jquery в '.data() 'метод? . '$ ('Вход') данных ('связывания'); '? http://api.jquery.com/jQuery.data/ –

+0

Да, но когда вы используете для каждого утверждения и делаете это, я получаю Uncaught TypeError: Object 0 не имеет данных метода ' – LmC

+1

Это, вероятно, потому, что в вашей 'для каждого цикла' вы используете собственный элемент DOM, а не объект jQuery. Только элемент, завернутый в объект jQuery, будет иметь метод '.data()'. –

ответ

5

JQuery интерпретирует "данных с чем-то" атрибуты по-разному чем другие атрибуты. Таким образом, вы должны выбрать все элементы и искать их привязки данных, как это:

$(document).ready(function(){ 
    $('input.InputText').each(function(){ 
     var input = $(this); 
     if ($(input).data().bind) { 
      alert($(input).data().bind); 
     } 
    }); 
});​ 

Затем вы можете сделать манипуляции со строками, чтобы разобрать ваши ценности, я предложил бы использовать JSON и просто загружая его в как объект. Вот рабочая скрипка: http://jsfiddle.net/3NERK/6/

2

Вы можете найти любой элемент, который имеет атрибут data-bind с помощью селектора атрибутов JQuery - $("[data-bind]"), а затем итерации по нему .each() и построить dataBinds массив из него, раздевая value: из каждого значения.

Это будет делать трюк:

dataBinds = []; 
$("[data-bind]").each(function(){ 
    dataBinds.push($(this).attr("data-bind").substring(7)); 
});​​​​​​ 

Я настроил пример этого: http://jsfiddle.net/dvirazulay/YPnwQ/

0

Для этого вы можете использовать метод .data() с .each().

DEMO

$('input').each(function() { 
    var $this = $(this); 

    alert($this.data('bind').replace("value: ", ""));    
});​ 
1

Получить все элементы с data-bind атрибута: $('[data-bind]')

Итерация этих элементов и манипулировать атрибутом данных связывания:

$('[data-bind]').each(function(element,index){ 
    var data_bind = $(element).data('bind'); 
    alert(data_bind); 
}) 
Смежные вопросы