JavaScript不会再次运行

时间:2010-09-30 01:33:32

标签: javascript jquery html

我正在使用$(document).ready()运行脚本,它正在按照我希望的方式加载,但是,当更改html选择控件时,需要运行相同的脚本。

我最终需要的是过滤器和排序在初始加载时运行,从低到高排序,然后在页面加载后,用户应该能够选择任何选择控件,并根据需要进行过滤和排序。

转到http://webtest.ipam.ucla.edu查看代码,您可以在页面底部下载包含所有文件的文件夹。

我该如何解决这个问题?

7 个答案:

答案 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检查完整变量并对数据进行简单的过滤和排序,并且所有这些都很有用。

再次感谢你。