Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Updated class selection plugin to attach classes in a smarter way whe…
…n only a single element is selected (instead of wrapping in span)
  • Loading branch information
Marcus Nyeholt committed May 24, 2011
1 parent 74e3003 commit ad4bde2
Showing 1 changed file with 34 additions and 16 deletions.
50 changes: 34 additions & 16 deletions javascript/nicedit-class-selector.js
Expand Up @@ -60,29 +60,47 @@
var curRange = this.ne.selectedInstance.getRng();
if (window.getSelection) {
var selectionContent = curRange.extractContents();
for (var i = selectionContent.childNodes.length - 1; i >= 0; i--) {
var tn = selectionContent.childNodes[i];
if (tn.nodeType == 3) {
curRange.insertNode($('<span>').addClass(cls).text(tn.nodeValue).get(0));
} else {
curRange.insertNode($(tn).addClass(cls).clone().get(0));
if (selectionContent.childNodes && selectionContent.childNodes.length > 0) {
for (var i = selectionContent.childNodes.length - 1; i >= 0; i--) {
var tn = selectionContent.childNodes[i];
if (tn.nodeType == 3) {
curRange.insertNode($('<span>').addClass(cls).text(tn.nodeValue).get(0));
} else {
curRange.insertNode($(tn).addClass(cls).clone().get(0));
}
}
} else {
var seld = this.ne.selectedInstance.selElm();
if (seld.nodeType == 3) {
seld = seld.parentNode;
}
$(seld).addClass(cls);
}
} else {
var childNodes = $('<div>').append(curRange.htmlText).get(0).childNodes;
var pc = $('<div>');
for (var i = 0; i < childNodes.length; i++) {
var tn = childNodes[i];
if (tn.nodeType == 3) {
var newSpan = $('<span>').addClass(cls).text(tn.nodeValue);
pc.append(newSpan);
} else {
var newSpan = $(tn).clone().addClass(cls);
pc.append(newSpan);
if (childNodes && childNodes.length) {
for (var i = 0; i < childNodes.length; i++) {
var tn = childNodes[i];
if (tn.nodeType == 3) {
var newSpan = $('<span>').addClass(cls).text(tn.nodeValue);
pc.append(newSpan);
} else {
var newSpan = $(tn).clone().addClass(cls);
pc.append(newSpan);
}
}
var newText = pc.html();
curRange.pasteHTML(newText);
} else {
var seld = this.ne.selectedInstance.selElm();
if (seld) {
if (seld.nodeType == 3) {
seld = seld.parentNode;
}
$(seld).addClass(cls);
}
}
var newText = pc.html();
curRange.pasteHTML(newText);
}

this.close();
Expand Down

0 comments on commit ad4bde2

Please sign in to comment.