我的第一个 jquery 脚本有一些简单的代码,我试图调用它的函数,但它一直说该函数不存在!我检查了拼写,我确定我以前有过这个工作,但我不知道发生了什么变化。
这是我的代码:http: //jsfiddle.net/spadez/6LLpC/
这就是我调用函数的方式:
jQuery(function($){
applyField();
});
谁能告诉我我哪里出错了?
我的第一个 jquery 脚本有一些简单的代码,我试图调用它的函数,但它一直说该函数不存在!我检查了拼写,我确定我以前有过这个工作,但我不知道发生了什么变化。
这是我的代码:http: //jsfiddle.net/spadez/6LLpC/
这就是我调用函数的方式:
jQuery(function($){
applyField();
});
谁能告诉我我哪里出错了?
applyField
未定义,因为 jsFiddle 将您的代码包装在onload
事件处理程序中。因此该函数仅在此事件处理程序中可见。
"no wrap - in <head>"
在左侧菜单中选择:
或者,您也可以从此事件处理程序中调用您的函数,这样会更加连贯。
请注意,调用该函数是不够的。如果您希望事件绑定有效,请更改
$(this).on('change', '#apply',function() {
到
$(document.body).on('change', '#apply',function() {
解决onload
问题后,您的第二个问题this
不是<select>
您的函数中的元素的父级。为了使用这种风格,.on
您需要传入您要定位的元素的父元素(可以是文档)。
更改自:
$(this).on('change', '#apply',function() {
到:
$(document).on('change', '#apply',function() {
另外,为了防止隐藏所有输入,我建议使用类而不是选择$('input')
. 见小提琴。
jQuery
$(document).ready(function(){
applyField();
});
// Apply Fields
function applyField() {
$(this).on('change', '#apply',function() {
var selected = $(this).find(':selected').val(),
elem = $("#"+selected);
$("input").addClass('hidden');
elem.removeClass('hidden');
$(".donthide").show();
});
$("#apply").trigger('change');
};
jQuery
on
DOM准备好后需要执行该功能..检查演示。
$(document).ready(function () {
$(this).on('change', '#apply',function() {
var selected = $(this).find(':selected').val(),
elem = $("#"+selected);
$("input").addClass('hidden');
elem.removeClass('hidden');
$(".donthide").show();
});
$("#apply").trigger('change');
});