2010-05-28 16 views
0

写这个函数ontop of jQuery的最佳方式是什么?函数中的习惯性jQuery和选择器路径

背景:我正在研究一个遗留的Web应用程序,它有很多问题。它要求我们插入一个IFrame来照顾几个“屏幕”。后来这段代码会被重构,但现在我们需要这个。

function openIframePage(selectorPath, url) { 
    if ($(selectorPath).length > 0) { 
     $('#ifrPage').attr('src', url); 
    } else { 
     $(selectorPath).append('<iframe id="ifrPage" src="' + url + '" />'); 
    } 
} 
function closeIframePage() { 
    $('#ifrPage').remove(); 
} 

有没有更好的方法来写这个?大多数人如何绕过选择器?或者他们传递jQuery对象本身?不寻找插件。谢谢。

回答

3

我会让该函数以一个实际的jQuery对象作为参数,并在传递参数时调用$
这意味着选择器只会被评估一次。

例如:

function openIframePage(elem, url) { 
    if (elem.length > 0) { 
     $('#ifrPage').attr('src', url); 
    } else { 
     elem.append('<iframe id="ifrPage" src="' + url + '" />'); 
    } 
} 

为了获得最大的灵活性,你可以写elem = $(elem),然后传递几乎所有的东西。

+0

将它称为elem是否正常?我的意思是我知道你可以。但我从风格的角度思考,因为它真的是jQuery对象。 – BuddyJoe 2010-05-28 16:36:56

+0

我不确定。你可以称它为'obj'或'target',或者'iframe'。 – SLaks 2010-05-28 16:46:05

+0

从来没有尝试过,但$($(“#myDiv”))== $(“#myDiv”)? – BuddyJoe 2010-05-28 16:49:26