2012-03-23 48 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