2013-02-18 2 views
0

Я знаю, что это элементарный материал, но я просто не могу понять это ...Применить функцию к конкретным элементам

Как применить изменения CSS для нескольких элементов? На данный момент он работает только для первого, но не показывает ошибок.

function elemInit(){ 

    var elem1 = jQ('#elem1'); 
    var elem2 = jQ('#elem2'); 

    jQ(elem1, elem2).each(function(){ 
     jQ(this).css({ 
      'margin-left': '-' + jQ(this).width()/2 + 'px' 
     }); 
    }); 

}; 

elemInit(); 

jQ обязан обеспечить отсутствие конфликта.

ответ

3

JQuery селекторы работают как CSS селекторов, а также css метод использует each метод внутренне, вы можете написать:

jQ('#elem1, #elem2').css('marginLeft', function(i, oldMarginLeft) { 
    return '-' + jQ(this).width()/2 + 'px'; 
}); 
+0

Интересный подход. Я забыл о объявлении функции для значения и не имел понятия о том, какой css по умолчанию каждый метод. Благодарю. – verism

+0

@verism Добро пожаловать. – undefined

2
var jQelem1and2 = jQ('#elem1, #elem2'); 

jQelem1and2.each(function(){ 
    jQ(this).css({ 
     'margin-left': '-' + jQ(this).width()/2 + 'px' 
    }); 
}); 

Или я что-то пропустил?

+0

Нет, это работает отлично! – verism

+0

@verism Отлично. Я бы предложил нестандартный подход. Он делает что-то подобное этому (внутренне), но выглядит немного чище. – Johan

0

попробовать этот

var elem1 = '#elem1'; 
var elem2 = '#elem2'; 
jQ(elem1, elem2).each(function(){ 
    jQ(this).css({ 
     'margin-left': '-' + jQ(this).width()/2 + 'px' 
    }); 
}); 
1

синтаксису, используемый для соединения двух объектов JQuery - - $($obj1, $obj2) - неверно; это something entirely different.

Помимо других решений, которые работают непосредственно соответствующие элементы, необходимые для, общее решение заключается в использовании .add:

$obj1.add($obj2).each(...) 

И, наконец, на самом деле нет необходимости .each здесь - .css непосредственно будет работа.

+0

Спасибо за информацию - я попробовал add(), скопировал из другого примера, но безуспешно. – verism

+0

Вы пробовали 'elem1.add (elem2)' в функции выше, и это не сработало? – Jon

+0

I _think_ Я попробовал '$ (elem1) .add (elem2)' - iirc. – verism

Смежные вопросы