Jquery 我的Moodle测验中输入框的id不断变化!你知道,里面有个冒号的身份证

Jquery 我的Moodle测验中输入框的id不断变化!你知道,里面有个冒号的身份证,jquery,input,moodle,Jquery,Input,Moodle,我的Moodle测验中输入框的id不断变化 前一刻id是q1525:32_sub1_answer,下一刻(当我在Firefox中打开课程页面时),它是q1526:32_sub1_answer <input id="q1526:32_sub1_answer" type="text" maxlength="14" size="14" name="q1526:32_sub1_answer"></input> 如您所见,我在Jquery代码中将id硬编码为q1524:36\u

我的Moodle测验中输入框的id不断变化

前一刻id是
q1525:32_sub1_answer
,下一刻(当我在Firefox中打开课程页面时),它是
q1526:32_sub1_answer

<input id="q1526:32_sub1_answer" type="text" maxlength="14" size="14" name="q1526:32_sub1_answer"></input>
如您所见,我在Jquery代码中将id硬编码为
q1524:36\u sub1\u answer
。问题是Moodle一直在动态地为输入框的id创建一个新的
q9999:
前缀id。所以我的JQuery代码实际上是无用的。有点像坏了的手表,一天只准两次

这里需要一点帮助。任何人有人吗


Frankie Kam

我认为你需要考虑创建一个主题。继承现有主题,然后覆盖测验的样式


这就是你的做法。参考这篇题为“在JQuery中处理元素ID中的冒号–Visualforce问题”的文章, 特别是某个“约翰”的评论,引用:

“我通常只使用$(“input[id$=blahblah]”)这样的选择器,因为冒号之前的内容以及冒号本身通常都是动态的。基本上,jQuery会查找所有id以字符串“blahblah”结尾的输入“效果非常好,而且比一直担心结肠脱离更省事。”

所以为了解决我的问题,我用硬编码

    $("q1524:36_sub1_answer").focus(function(){
        $("#advice").css("background-color","#FFFFA7"); 
    });
第一行有类似正则表达式的代码:

    $("input[id$=36_sub1_answer]").focus(function(){
        $("#advice").css("background-color","#FFFFA7"); 
    });
因此,解决方案是我使用以下代码: 输入[id$=36\u sub1\u answer]简单的意思是,匹配任何以字符串36\u sub1\u answer结尾的元素id。Igor!!拉…开关!!!它是活的!!!我创建了你!!!哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

问候
弗兰基的疯狂科学家'KAMP/P>谢谢,罗素。是的,我真的需要先把我的牙齿放到MODOLE。ORG的文档中去。这是一个很好的基础。非常感谢。哦,好的,罗素。我明白了。看上面的MAH答案。我在网上找到了福雷斯特。
    $("input[id$=36_sub1_answer]").focus(function(){
        $("#advice").css("background-color","#FFFFA7"); 
    });