Находим самый первый элемент среди родительских

Рассмотрим очень полезную функцию которая находит и возвращает первый родительский элемент от текущего или заданного элемента, а делает она это по заданному имени или названию класса у родительского элемента.

Недавно понадобилась функция которая находит и возвращает первый родительский элемент от текущего элемента и чтобы находила она родительский элемент по заданному имени родительского элемента или названию класса у родительского элемента.

Порылся в нете, на сайте jQuery, но найти не смог, поэтому написал свою, которую Вы можете наблюдать ниже.

function firstParent(e, name){
	if(e && typeof(e[0])=="object"){ e = e[0]; }
	var finded = null;
	if(name.substr(0,1)=="."){ var findClass = name.substr(1); }else{ var findClass = null; }
	while(e){
		e = e.parentNode;
		if(e && typeof(e)=="object"){
			if(findClass){
				if( $(e).hasClass( findClass ) ){
					finded = e;
					e = null;
				}
			}else{
				if(e.tagName==name){
					finded = e;
					e = null;
				}
			}
		}else{
			e = null;
		}
	}
	return finded;
}
jQuery.fn.firstParent = function(name){
	var e = firstParent(this, name);
	return $(e);
};

Применять данную функцию можносайт источник http://yapro.ru Sat Mar 13 2010 15:23:28 GMT+0300 так:

// с применения jQuery
var form = $("#elementID").firstParent("FORM");

alert( form[0].tagName );// проверим название тега, который нашелся

$("#elementID").firstParent(".mceEditor").prev().attr("name", "Прекрасно");

// более сложный пример:
$("textarea").change(function(){
	// автоматическая пометка к сохранению тех полей, которые изменены
	$(this).firstParent("TR").find("[name^=save]").attr("checked","checked");
});

// без применения jQuery
var TR = firstParent( document.getElementById("elementID"), "TR");

Думаю, данная функция очень поможет многим программистам, лично мне она очень часто бывает полезна.


13.04.2010 12:03

Комментарии

jQuery('#element').closest('выражение'), нет?
Vladimir | 07.05.2010 06:47