Jquery:为什么一个工作,另一个不工作?

Jquery:为什么一个工作,另一个不工作?,jquery,select,loops,Jquery,Select,Loops,我正在开发一个iPad应用程序,如果jquery代码的话,代码超过1000行,我知道它可以更短,所以我做了一个测试页面,让我的循环正常工作。我有两个测试页面和相同的代码,但它只在一个页面上工作 委员会: (功能(){ 对于(p=1;p您需要在选择器中的选项之前留出一个空格 n = $(".p" + p + "hole" + i + "option:selected").val(); r = $(".parhole" + i + "option:selected").val(); 应改为: n

我正在开发一个iPad应用程序,如果jquery代码的话,代码超过1000行,我知道它可以更短,所以我做了一个测试页面,让我的循环正常工作。我有两个测试页面和相同的代码,但它只在一个页面上工作

委员会:


(功能(){

对于(p=1;p您需要在选择器中的
选项
之前留出一个空格

n = $(".p" + p + "hole" + i + "option:selected").val();
r = $(".parhole" + i + "option:selected").val();
应改为:

n = $(".p" + p + "hole" + i + " option:selected").val();
r = $(".parhole" + i + " option:selected").val();
作为另一个用户,您的选择器缺少一个重要的空格。因此,您的选择器不需要调用
选项:selected
,因为select元素本身上有所选选项的值

我做了一些修改以提高可伸缩性,并使用了select元素的值:

$("select")
    .filter(function holeFilter(){ 
        return /^p\d+hole\d+$/.test( this.className );
    }).on("change", function(e){
        var sel = ".p" + this.className.match(/\d+/g).join("hole") + "type";
        $(sel).html( e.target.value == 1 ? "Hole in one!" : "Try again" );
    });​

Fiddle:

我喜欢的是一个,但大型应用程序将有更多类似的文件。它将如何将其放入您的代码中?这是@AlanBell,我不明白。上面的代码替换了您的原始代码,并与您提供的演示标记正确配合。@AlanBell喜欢这样吗?请注意,我确信
.html
部分可能是正确的简化,但我的高尔夫知识非常贫乏,因此我将代码保留在类似的结构中。感谢您的帮助,将我的代码缩短为900多行。但我还有一个问题,如果您可以尝试一下,这里有一个链接。这一个将自动填充PAR,问题是它只能有一个coruse,我不希望有aleast m矿石
n = $(".p" + p + "hole" + i + " option:selected").val();
r = $(".parhole" + i + " option:selected").val();
$("select")
    .filter(function holeFilter(){ 
        return /^p\d+hole\d+$/.test( this.className );
    }).on("change", function(e){
        var sel = ".p" + this.className.match(/\d+/g).join("hole") + "type";
        $(sel).html( e.target.value == 1 ? "Hole in one!" : "Try again" );
    });​