jQuery noConflict Mode & jQuery Plugins?

josDesign

Erfahrenes Mitglied
Hallo,

ich habe jQuery in Benutzung (Version 1.3.2) - Mit dabei sind 3 Plugins (pulsate aus jQuery UI; truncate ein jquery plugin; cycle ein jquery plugin) Alles in allem funktioniert das recht gut. Allerdings gibt es den noConflict-Mode welchen ich setze mit
Code:
jQuery.noConflict(); //vor meinem eigentlichem Codeaufrufzeilen
und das Dollarzeichen ersetze ich durch "jQuery". Funktioniert auch ganz gut - aber die eingebunden Skripte sind teilweise nicht für noConflict kompatibel. Ich kenne mich nicht so gut aus im Bereich Javaskript - aber habe gehört das man die Plugins noConflict tauglich machen kann.
Ich frage direkt: Kann mir jemand erklären, wie ich prinzipiell ein jedes Javaskript von jQuery noConflict tauglich machen kann? Muss ich hierfür einfach das Dollarzeichen in "jQuery" umwandeln? Wie sieht das aus?

Mit bestem Dank im Voraus,
jos

PS: ZB. Dieses Plugin, wie kann ich das zB ändern? http://jquery.malsup.com/cycle/jquery.cycle.all.js?v2.72
 
Zuletzt bearbeitet:
Ja das schon - aber ich frage mich, inwiefern ich genau dieses angegebene Skript verändern muss? Es gehören ja nur einige Zeichen ausgetauscht, aber welche? Die ausserhalb der Function oder von jeder Function in der Function?

Vielleicht kann mir anhand der angegebenen Datei ein Beispiel gemacht werden - ich denk das ich dann kapiere, was umgeschrieben werden muss.


Mit bestem Dank im Voraus,
jos
 
Verstehe ich es weiters richtig, dass folgender Code von Haus aus schon für den noConflict Mode vorbereitet ist?

Code:
jQuery.fn.truncate = function (max, settings) {
	settings = jQuery.extend({
		chars: /\s/,
		trail: ["...", ""]
	},
	settings);
	var myResults = {};
	var ie = $.browser.msie;
	function fixIE(o) {
		if (ie) {
			o.style.removeAttribute("filter")
		}
	}
	return this.each(function () {
		var $this = jQuery(this);
		var myStrOrig = $this.html().replace(/\r\n/gim, "");
		var myStr = myStrOrig;
		var myRegEx = /<\/?[^<>]*\/?>/gim;
		var myRegExArray;
		var myRegExHash = {};
		var myResultsKey = $("*").index(this);
		while ((myRegExArray = myRegEx.exec(myStr)) != null) {
			myRegExHash[myRegExArray.index] = myRegExArray[0]
		}
		myStr = jQuery.trim(myStr.split(myRegEx).join(""));
		if (myStr.length > max) {
			var c;
			while (max < myStr.length) {
				c = myStr.charAt(max);
				if (c.match(settings.chars)) {
					myStr = myStr.substring(0, max);
					break
				}
				max--
			}
			if (myStrOrig.search(myRegEx) != -1) {
				var endCap = 0;
				for (eachEl in myRegExHash) {
					myStr = [myStr.substring(0, eachEl), myRegExHash[eachEl], myStr.substring(eachEl, myStr.length)].join("");
					if (eachEl < myStr.length) {
						endCap = myStr.length
					}
				}
				$this.html([myStr.substring(0, endCap), myStr.substring(endCap, myStr.length).replace(/<(\w+)[^>]*>.*<\/\1>/gim, "").replace(/<(br|hr|img|input)[^<>]*\/?>/gim, "")].join(""))
			} else {
				$this.html(myStr)
			}
			myResults[myResultsKey] = myStrOrig;
			$this.html(["<div class='truncate_less'>", $this.html(), settings.trail[0], "</div>"].join("")).find(".truncate_show", this).click(function () {
				if ($this.find(".truncate_more").length == 0) {
					$this.append(["<div class='truncate_more' style='display: none;'>", myResults[myResultsKey], settings.trail[1], "</div>"].join("")).find(".truncate_hide").click(function () {
						$this.find(".truncate_more").css("background", "#fff").fadeOut("normal", function () {
							$this.find(".truncate_less").css("background", "#fff").fadeIn("normal", function () {
								fixIE(this);
								$(this).css("background", "none")
							});
							fixIE(this)
						});
						return false
					})
				}
				$this.find(".truncate_less").fadeOut("normal", function () {
					$this.find(".truncate_more").fadeIn("normal", function () {
						fixIE(this)
					});
					fixIE(this)
				});
				jQuery(".truncate_show", $this).click(function () {
					$this.find(".truncate_less").css("background", "#fff").fadeOut("normal", function () {
						$this.find(".truncate_more").css("background", "#fff").fadeIn("normal", function () {
							fixIE(this);
							$(this).css("background", "none")
						});
						fixIE(this)
					});
					return false
				});
				return false
			})
		}
	})
};


Es wären noch einige Dollarzeichen drinnen! Deshalb bin ich etwas verwirrt.
 
$(this).css("background", "none") musst du zum Beispiel verändern
etwas wie $this hab ich aber noch nie gesehen, ich glaube aber nicht, dass es zu jQuery's $-Objekt gehört

EDIT: hab das gefühl, $this ist ein jQuery-Objekt. Scheint aber referenziert zu sein (Variablenname in der Parameterangabe), würd ich also zunächst so stehen lassen
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück