我正在使用$(document).ready()
运行脚本,它正在按照我希望的方式加载,但是,当更改html选择控件时,需要运行相同的脚本。
我最终需要的是过滤器和排序在初始加载时运行,从低到高排序,然后在页面加载后,用户应该能够选择任何选择控件,并根据需要进行过滤和排序。
转到http://webtest.ipam.ucla.edu查看代码,您可以在页面底部下载包含所有文件的文件夹。
我该如何解决这个问题?
答案 0 :(得分:5)
您可以将所有可重复使用的逻辑放入函数中:
function myPrettyJavaScriptLogic () {
// All the code that you want to reuse in here
}
然后,您可以从document.ready()
以及选择控件的onchange
处理程序调用上述函数。
答案 1 :(得分:1)
在doc ready闭包之外创建一个函数,并在需要时调用它。示例是jQuery,但doc ready是同一个事件:
var doSomethingCool = function( coolStuff ) {
// Do cool stuff
}
$(function(){
doSomethingCool( $(this) );
$('#selectControlId').change(function(e){
doSomethingCool();
});
});
答案 2 :(得分:1)
由于您正在引用.ready函数,我假设您实际上正在使用jQuery。
$(document).ready()或jQuery(document).ready()
ready()函数中的任何内容只会被调用一次 - 加载页面时。在执行该代码之前,它会等待整个DOM加载。
您可以将您的功能提取到单独的功能,以便根据您的选择控制更改启动。
您可能会阅读我在其他一周写的jQuery教程中受益: http://chadcarter.net/jquery-goodness/
此外,jQuery API中的实际.change事件位于: http://api.jquery.com/change/
假设您希望在页面加载时调用该功能,并且在更改选项时,您将需要创建一个新函数并在.ready和.change函数内部调用该函数。
希望这有帮助!
答案 3 :(得分:0)
将您的脚本放在命名函数中。在domready和select.change()中调用它。
答案 4 :(得分:0)
您需要为select
框的onChange
事件设置处理程序。我要做的是将你需要执行的代码拉出到一个单独的函数中,然后执行类似
function dostuff(){
//do whatever you need to
}
$(document).ready(function() {
dostuff();
}
<select onchange"dostuff()" >... </select>
请注意,这很简单,只是为了给你一个想法。
查看this link了解select
onchange
的更多信息。
答案 5 :(得分: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 */
});
});
答案 6 :(得分:0)
谢谢大家的帮助,现在已修复。我这样做的方法是将$(function(){})封装在另一个函数(filtersortProcess())中,然后创建另一个脚本,自动选择Low to High选项并调用windows.load上的filtersortProcess()。
在$(function(){})中,我添加了一个变量(完整),当它进入实际的过滤进程时,然后在过滤进程之后(如果代码在完成进程之前退出),则将其设置为1检查完整变量并对数据进行简单的过滤和排序,并且所有这些都很有用。
再次感谢你。