Рассмотрим очень полезную функцию которая находит и возвращает первый родительский элемент от текущего или заданного элемента, а делает она это по заданному имени или названию класса у родительского элемента.
Недавно понадобилась функция которая находит и возвращает первый родительский элемент от текущего элемента и чтобы находила она родительский элемент по заданному имени родительского элемента или названию класса у родительского элемента.
Порылся в нете, на сайте 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");
Думаю, данная функция очень поможет многим программистам, лично мне она очень часто бывает полезна.