2012-05-31 5 views
0

HTML выглядитПрименить CSS класс (важно!) В TextBox с помощью JQuery

<td> 
    <input type="text" onkeydown="" style="" value="" id="v65-onepage-billlastname" name="BillingLastName" maxlength="50" size="25" class="co-text"> 
</td> 

Мой CSS класс (обратите внимание, что я не могу изменить файл .css, как его называют удаленно с другого сервера)

#v65-onepage-billfirstname, #v65-onepage-billlastname, #v65-onepage-billcompanyname, #v65-onepage-billaddr1, #v65-onepage-billaddr2, #v65-onepage-billcity, #v65-cart-billemail, #v65-onepage-shipfirstname, #v65-onepage-shiplastname, #v65-onepage-shipcompanyname, #v65-onepage-shipaddr1, #v65-onepage-shipaddr2, #v65-onepage-shipcity { 
    width: 280px !important; 
} 

чтобы переопределить CSS и изменить ширину V65-OnePage-billlastname к 150px, используя Jquery, что метод, используемый

+1

Возможный дубликат http://stackoverflow.com/questions/462537/overriding-important-style-using-javascript –

+1

! Важно, как правило, показатель того, что вам нужно переделан ваш CSS. Попытайтесь избежать этого любой ценой. Вам лучше сделать свой CSS более конкретным: http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/ –

+0

"* обратите внимание, что я не могу изменить .CSS файл как его вызываемый удаленно с какого-либо другого сервера * " –

ответ

4

без смешивания JavaScript и CSS, просто определить два правила CSS

#v65-onepage-billfirstname { width: 280px !important } 
#v65-onepage-billfirstname.afterJSExecution { width: 150px !important } 

и добавить класс как так

$('#v65-onepage-billfirstname').addClass('afterJSExecution'); 

пример скрипкой: http://jsfiddle.net/JQtmt/

+0

OP Говорит: _пожалуйста, заметьте, я не могу изменить файл .CSS как его вызываемый удаленно с какого-либо другого сервера_. С другой стороны, он может определить это правило в локальном файле css. –

+0

не нужно изменять этот конкретный файл css, вы можете вставить это правило на странице или внутри локального css. Было бы всегда лучше, чем распространять значения css внутри js-кода, imho – fcalderan

+0

Да, правда .. Я упоминал это: P –

1

JQuery itsself не может понять приоритеты. Однако вы можете изменить атрибут стиля:

var id = '#v65-onepage-billlastname'; 
var curStyle = $(id).attr('style'); 
if (curStyle) 
    $(id).attr('style', curStyle + 'width: 150px !important'); 
else 
    $(id).attr('style', 'width: 150px !important'); 
+0

-1 от меня, поскольку это не правильный способ сделать. –

+0

Ну, я думаю, что это не сработает с использованием метода '.css()'. '.width()' может работать, но jQuery не выполняет никаких '! important' дополнений к вызовам' .css() '. Вывод - это еще один способ сделать это, потому что встроенные стили с '! Important' имеют наивысший приоритет над любыми другими стилями. – Hidde

+0

Если вы собираетесь изменить атрибут 'style', вы должны использовать метод' .width', потому что он делает то же самое. –

0

Вы можете достичь этого путем добавления дополнительного класса на вход либо в HTML или хотя JQuery для того, чтобы поставить стиль CSS, который перекроет первоначальную ширину, будучи более конкретный. например

<style type="text/css"> 

    /* existing style */ 
    #namedElement { 
     width: 280px !important; 
    } 

    /* new style */ 
    #namedElement.co-text.namedElementOverride { 
     width: 100px !important; 
    } 

</style> 

Тогда просто обновить HTML с дополнительным тегом (совместно текст уже присутствует в исходном примере)

<input type="text" onkeydown="" style="" value="" id="namedElement" maxlength="50" size="25" class="co-text namedElementOverride" /> 

Или назначить новый класс с JQuery;

$('#namedElement.co-text') 
     .addClass('namedElementOverride'); 
+0

Я думаю, вы пропустили несколько знаков доллара. – Hidde

+1

Хорошая точка зрения, пересмотренная версия - не может сделать ее слишком легкой, хотя верно? ;) –

+0

пробовал не меняет ширину – user580950

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