채용 된 CSS 명명 규칙이 jQuery UI가 제공하는 클래스 이름과 호환되지 않는 프로젝트에서 작업하고 있습니다. jQuery UI 소스에서 (위험한 소리가 들리지만) jQuery UI가 요소에 제공하는 클래스 이름을 변경하기위한 간단한 검색/바꾸기 이외의 다른 방법이 있습니까?jQuery UI 클래스 이름
예를 들어, jQuery resizable은 일 때 클래스 .ui-resizable-handle
과 함께 핸들을 필요로합니다.
채용 된 CSS 명명 규칙이 jQuery UI가 제공하는 클래스 이름과 호환되지 않는 프로젝트에서 작업하고 있습니다. jQuery UI 소스에서 (위험한 소리가 들리지만) jQuery UI가 요소에 제공하는 클래스 이름을 변경하기위한 간단한 검색/바꾸기 이외의 다른 방법이 있습니까?jQuery UI 클래스 이름
예를 들어, jQuery resizable은 일 때 클래스 .ui-resizable-handle
과 함께 핸들을 필요로합니다.
제대로 이해했다면 "ui-"부분을 잘라내서 jQuery UI 클래스 이름을 camelize하려고합니다.
그렇다면, 당신은 같은 것을 할 수 있습니다 - 여기
$('*[class^=ui-]').toggleClass(function (index, classNamesToChange) {
$.each(classNamesToChange.split(' '), function(index, classNameToChange){
return classNameToChange[3].toLowerCase() +
classNameToChange.replace(/-([a-z])/g, function (a, b) {
return b.toUpperCase();
}).slice(3);
});
});
이 바이올린입니다 -
http://jsfiddle.net/78GM5/3/
편집는 해당 스타일에 낙타 맡았다 클래스 이름을 매핑하려는 경우, 당신을 이것을 시도 할 수 있습니다. 다음을 사용하여 클래스 이름의 스타일을 가져옵니다. Can jQuery get all CSS styles associated with an element?
그리고 스타일로 작성이 코드를 사용 -
function css(a) {
var sheets = document.styleSheets, o = {};
for (var i in sheets) {
var rules = sheets[i].rules || sheets[i].cssRules;
for (var r in rules) {
if (a.is(rules[r].selectorText)) {
o = $.extend(o, css2json(rules[r].style), css2json(a.attr('style')));
}
}
}
return o;
}
function css2json(css) {
var s = {};
if (!css) return s;
if (css instanceof CSSStyleDeclaration) {
for (var i in css) {
if ((css[i]).toLowerCase) {
s[(css[i]).toLowerCase()] = (css[css[i]]);
}
}
} else if (typeof css == "string") {
css = css.split("; ");
for (var i in css) {
var l = css[i].split(": ");
s[l[0].toLowerCase()] = (l[1]);
}
}
return s;
}
위의 코드 조각이 멋진 스레드에서입니다.
$('*[class^=ui-]').toggleClass(function (index, classNamesToChange) {
$.each(classNamesToChange.split(' '), function(index, classNameToChange){
var originalClassName = classNameToChange;
var classNameToReturn = classNameToChange[3].toLowerCase() + classNameToChange.replace(/-([a-z])/g, function (a, b) {
return b.toUpperCase();
}).slice(3);
$('style').append('.' + classNameToReturn + JSON.stringify(css($('.' + originalClassName))));
return classNameToReturn;
});
});
이것은 명백한 이유로 jsfiddle에서 작동하지 않습니다. 그러나 단지 생각 .. 여기
이의 바이올린입니다 - http://jsfiddle.net/78GM5/6/불행히도, 그게 내가하려고하는 것이 아닙니다. DOM에있는 클래스 이름뿐만 아니라 JUI가 내부적으로 사용하는 클래스 이름도 변경해야합니다. http://jsfiddle.net/78GM5/5/ (실제로 앵커를 클릭하면 draggable가 깨지므로) –
음 .. 행운을 빌어 서 검색 및 바꾸기를 시도하십시오! :) 당신이 CSS 파일의 클래스 이름을 camelize하는 다른 방법은 생각할 수 없습니다 (멋진 CSS 파일 인 camelizer/parser에 대해서는 알지 못합니다) –
당신이 그것을의이 같은 적용받을 즉시 클래스를 변경 jQuery를 사용할 수 있습니다. $ ("# elementId로부터") removeClass () .addClass ("myClass"); –
글쎄, 그래, 할 수 있겠지만 jQuery UI의 내부 요소는 망칠 것이다. 그래서 저는 JUI에게 어떻게 든 변화에 관해 말해야 할 것입니다. 그러나 그것이 OP가 무엇인지에 대한 것입니다. –