2012-03-23 50 views
1

是否有可能知道从哪里启动jQuery函数?jQuery函数 - DIV容器作为参数

<div> 
    <script language="javascript"> 
    $(document).ready(function() { 
     whereAmI($(currentDIV)); 
    }); 
    </script> 
</div> 
+0

在什么情况下?通过什么方式? – Starx 2012-03-23 17:52:45

+0

您是否在搜索:“this”? (在你的例子中“这个”将是“文档”)。要获得jquery对象,请使用:$(this)。 – 2012-03-23 17:55:35

+0

我认为你正在为什么触发该功能?例如,您想知道文档就绪功能触发了WhereAmI吗? – 2012-03-23 17:58:28

回答

0

没有为您保存关于正在执行的JavaScript加载的DOM位置的信息。但是,您可以使用一个事实,即它可以在加载实现这个内存脚本执行:

<div id="target"> 
    <script> 
     var thisScript1 = $('script').filter(':last'); 
     $(document).ready(function() { 
      console.log(thisScript1.closest('div').attr('id')); // prints 'target' 
     }); 
    </script> 
</div> 
<div id="second"> 
    <script> 
     var thisScript2 = $('script').filter(':last'); 
     $(document).ready(function() { 
      console.log(thisScript2.closest('div').attr('id')); // prints 'second' 
     }); 
    </script> 
</div>​ 

这里,$('script').filter(':last');指的是页面上的最后一个脚本元素,它在执行时是“当前脚本”。请注意,对于我想记住的每个脚本,我已经命名了包含脚本对象的变量,否则它将被后续脚本破坏。另一种方法是将每个脚本包装在一个立即执行的匿名函数中,以便绑定当地的变量thisScript

+0

High five for you。我会在这里玩弄你的提示,看看它如何处理我的需求。感谢你们所有人的帮助。 – user1288337 2012-03-23 18:42:33

+0

对不起,它无法正常工作。我刚刚测试过,并且由唯一的var名称(thisScriptx)进行了条件化......否则它将被最后一次javascript调用覆盖,并且所有函数调用都将使用相同的参数值:( – user1288337 2012-03-23 21:36:53

0

如果该功能是由某种事件调用时,第一个参数是Event object,你可以只写类似。

$('a').click(function(e){ 
    console.log(e.target); 
}); 
+0

我的意思是,当DOM准备就绪时,whereAmI()函数将被启动,但是我想本地化脚本f在页面中。换句话说,whereAmI()函数可以在我的网页的很多部分迭代,因为div容器是ajax回调函数。这个jQuery函数将在这个div中准备处理程序。我其实不想在每个partialview中复制/粘贴我的whereAmI()函数内容... – user1288337 2012-03-23 18:02:33