2010-09-30 58 views
0

我正在使用$(document).ready()運行腳本,它按照我希望它加載的方式執行,但是,在更改html選擇控件時需要運行相同的腳本。JavaScript不會再運行

我最終需要的是過濾器和排序在低到高排序的初始加載運行,然後在加載頁面後,用戶應該能夠選擇任何選擇控制和篩選,並按他們的意願進行排序。

轉到http://webtest.ipam.ucla.edu查看代碼,並在頁面底部可以下載包含所有文件的文件夾。

我該如何解決這個問題?

+0

它是'jQuery'嗎?我假設這是因爲語法。如果是這樣,請添加'jQuery'來重新標記您的問題。 – BrunoLM 2010-09-30 01:44:46

回答

0

謝謝大家的幫助,現在已修好。我這樣做的方式是將$(function(){})封裝在另一個函數(filtersortProcess())中,然後創建另一個腳本來自動選擇Low to High選項並在windows.load上調用filtersortProcess()。我在$(function(){})中添加了一個變量(complete),並在實際的過濾器過程中將其設置爲1,然後在過濾器過程之後(如果代碼在完成過程之前退出)我檢查完整的變量,並做一個簡單的過濾器和數據排序,所有這一切都很好。

再次感謝您。

5

你可以把你所有的可重複使用的邏輯成一個函數:

function myPrettyJavaScriptLogic() { 
    // All the code that you want to reuse in here 
} 

然後你就可以無論從document.ready(),也從onchange處理您選擇控件的調用上面的函數。

0

將您的腳本放在命名函數中。在domready中調用它並選擇.change()。

1

在您的文檔就緒關閉之外創建一個函數,並在需要時調用它。例如jQuery的是文檔,但準備是相同的事件:

var doSomethingCool = function(coolStuff) { 
    // Do cool stuff 
} 

$(function(){ 
    doSomethingCool($(this)); 

    $('#selectControlId').change(function(e){ 
    doSomethingCool(); 
    }); 

}); 
0

您將需要設置爲select框的onChange事件的處理程序。我會做的是拉出來,你需要執行到一個單獨的函數的代碼,然後像做

function dostuff(){ 
//do whatever you need to 
} 

$(document).ready(function() { 
    dostuff(); 
} 

<select onchange"dostuff()" >... </select> 

注意,這是快速和骯髒的,只是爲了給你一個想法。

檢出this link更多關於selectonchange

1

由於您引用.ready函數,我假設您實際上正在使用jQuery。在加載頁面時 -

$(文件)。就緒()或jQuery的(文件)。就緒()就緒()函數中

任何纔會被調用一次。它在執行該代碼之前一直等到整個DOM被加載。

您可以將您的功能提取到單獨的功能,以根據您選擇的控件更改啓動。

我寫的一週你可以從閱讀jQuery的教程中受益: http://chadcarter.net/jquery-goodness/

另外,jQuery的API中的實際.change事件是在這裏: http://api.jquery.com/change/

假設你想要的功能在頁面加載時被調用,當選項被改變時,你將需要創建一個新的函數並在.ready和.change函數中調用該函數。

希望這會有所幫助!

+0

我試過你的答案,但有幾件事情搞砸了,1.這種排序現在只適用於第一個選項,並且2.當篩選器被選中,然後未選定任何東西都消失。我創建了一個名爲filtersortProcess的函數,在(document).ready()函數中調用函數filtersortProcess,並在onchange事件上調用所有我稱爲函數filtersortProcess的選項框的更改事件。請幫忙!!!! – mattgcon 2010-09-30 11:18:26

0

如果您使用jQuery,我認爲您是因爲此語法,您只需將事件onchange綁定到元素。

$("element").bind("change", function() { /* your logic */ }); 

您必須在元素呈現後運行此代碼。如果您將此代碼放置在$(document).ready之內,則不會出現問題。但整個頁面必須在偶數綁定之前加載。

所以,你可以做到以下幾點:

<select id="sel"> 
    <option>A</option> 
    <option>B</option> 
</select> 

則事件change綁定。

$(function() { /* equivalent to document.ready */ 
    $("#sel").bind("change", function() { 
     /* code that runs when the selection change */ 
    }); 
}); 
+0

.bind('change')與.change()相同。讓我們不要把可憐的OP與整個束縛與生活差異混爲一談。 – 2010-09-30 01:53:27

+0

我將如何去讓你們看我的HTML頁面。這大大混淆了我。 – mattgcon 2010-09-30 03:09:27

+0

@matt:如果您向我們展示代碼或向我們提供一些更多信息,那就太好了。 – BrunoLM 2010-09-30 03:11:36