2012-07-20 46 views
0

我正在研究一個Web應用程序,其中將相同的JSP頁面加載到具有不同參數的同一頁面的多個區域。動態JavaScript是爲每個部分構建的,問題是當我在類名上使用jQuery選擇器時,我在該JSP的所有實例中返回了具有該類的所有元素。我想要做的是在該動態JavaScript文件以某種方式覆蓋基$('。classname')風格選擇器做類似... $('<%= containerDiv%> .className')與重新分解所有的代碼來做到這一點。將容器添加到所有JQuery選擇

我試圖改變的所有代碼被封裝到一個JavaScript對象,所以我會想在構造函數中做到這一點。

在此先感謝。

編輯:

在僞代碼就是我要找的是...

$(regularConstructor) = $(localVar + ' ' + regularConstructor); 
+0

目標是不改變任何現有的代碼?你可以改變傳遞給構造函數的參數嗎?如果是這樣,請將父項傳遞給構造函數,然後查看Flops發佈的答案。 – 2012-07-20 13:19:02

+0

是的,我想避免更改代碼。查看對Flops答案的迴應。 – 2012-07-20 13:28:02

回答

1

你可以儘量不產生,但只給在選擇上下文作爲第二個參數。

這將是這樣的:

var widget = $("<div/>"); //Creating dom node 
/* 
    Or you can get it by your dinamic id: 
    widget = $("<%=containerDiv%>"); 
*/ 
widget.html("<div class='classname'>111</div>"); //Filling it with content 
widget.appendTo("body"); //Inserting it to document 
$(".classname", widget).fadeOut(); //working with elements inside your widget 

而且比你有,你可以在你的腳本中使用而無需在選擇衝突DOM節點的鏈接。

+0

這正是我想要做的,但看到相同的代碼在頁面上多次重複使用,我只希望構造函數有所不同,我知道的路線將把「容器」放入一個var,並且如果它存在,則將其前置。我想避免這樣做,因爲我所說的js文件超過1000行.. – 2012-07-20 13:27:18