JQuery каждый массив CSS - PullRequest
       5

JQuery каждый массив CSS

1 голос
/ 22 декабря 2009

Я сделал каждое утверждение, которое перебирает каждый найденный элемент класса. В то же время есть еще один предмет с другим классом, но с тем же ключом. Мне нужно получить ключ от первого и поместить его во 2-й предмет без повторения цикла.

$('.searchby').each(function(k,v){ // looping through .searchby
    $(v).live('change',function(){ // when .searchby drop down changed do this
        selv = $(this).val(); // get value of drop down
        $.post('file.php',{ 'val' : selv },function(data){

            // Below is where I need what I need to happen.
            // Previously I had .searchby as id but need multiple.
            // So, what I need it to do is like php.
            // $('.searchfield[k]).html(data); // <-- like this

            $('#searchfield').html(data);


        },'html'); // html, xml, script, json
    });
});

- EDIT -

Во-первых, v в $ (v) .live должно быть $ (this) .live. Во-вторых, я хочу преобразовать сценарий с одним / id в сценарий с несколькими объектами. Итак, я написал это, что работает.

$('.searchby').each(function(k,v){
    $(this).change(function(){
        selv = $(this).val();
        $.post('file.php',{
            'val' : selv
        },function(data){
            $('.searchfield').each(function(kk,vv){
                if(k == kk) $(vv).html(data);
            });
            //$('#searchfield').html(data);
        },'html'); // html, xml, script, json
    });
});

Но я бы хотел иметь возможность извлечь внутренний .each и заменить его на:

$('.searchfield:eq('+k+')') <-- something like this if I can get it to work

Итак, решение таково:

$('.searchby').each(function(k,v){
    $(this).change(function(){
        selv = $(this).val();
        $.post('file.php',{
            'val' : selv
        },function(data){
            $('.searchfield:eq('+k+')').html(data);
        },'html'); // html, xml, script, json
    });
});

Спасибо всем

Ответы [ 2 ]

1 голос
/ 22 декабря 2009

Я подозреваю, что ваш $(v) выше неверен, потому что $(...).each() предоставляет свой обратный вызов с одним задокументированным аргументом (индексом).

Чтобы получить эквивалент $('.searchfield[k]'), на самом деле доступен довольно близкий синтаксис:

$('.searchfield:eq('+k+')')
0 голосов
/ 22 декабря 2009

Вопрос не понятен. Вы говорите о классах, но затем ваш код использует $('#searchfield'), который используется для выбора элементов с заданным идентификатором.

Предполагая, что вы действительно хотите выбрать элементы с заданным классом (что более правильно, поскольку не должно быть элементов с дублированным идентификатором), и если существует ровно один элемент с классом searchfield для каждого элемента, выбранного с помощью $.each(), тогда вы можете использовать $($('.searchfield')[k]).html(data).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...