Jquery change() 函数

.change( handler(eventObject) )  函数的使用

这个函数的第一种用法是 .bind('change', handler) 的快捷方式,第二种用法是 .bind('change') 的快捷方式。

一个元素的值改变的时候将触发change事件。此事件仅限于<input>元素,<textarea>框和<select>元素。对于选择框,复选框和单选按钮,当用户用鼠标作出选择,该事件立即触发,但对于其他类型元素,该事件触发将推迟到元素失去焦点。


当我们在做全选、全不选的功能时也可以用change方法。首先给全选、全不选一个name属性,然后通过选择器获得对象,然后出发change方法,在change方法里执行全选、全部选方法。

$("input:[name=agree]").change(function(){
		 chooseAll();
	});

然后chooseAll()方法里在判断选的是全选还是全不选,然后根据判断结果循环需要选择的对象,判断该对象的值时候与判断结果的值是否相等,若相等则checked=true,否则就不做处理。


示例代码:


<html>
<head>
  <style>

  div { color:red; }
  </style>
  <script type="text/javascript" src="jquery-1.6.4.js"></script>
  
</head>
<body>
	<div>
	<input type="radio" name="agree"  value="true">全选</input><input type="radio" name="agree"  value="false">全不选</input>
	</div>
	<form id="first">
	<div><input type="radio" name="agree1"  value="true">同意</input><input type="radio" name="agree1"  value="false">不同意</input></div>
	<div><input type="radio" name="agree2"  value="true">同意</input><input type="radio" name="agree2"  value="false">不同意</input></div>
	<div><input type="radio" name="agree3"  value="true">同意</input><input type="radio" name="agree3"  value="false">不同意</input></div>
	<div><input type="radio" name="agree4"  value="true">同意</input><input type="radio" name="agree4"  value="false">不同意</input></div>
	</form>
  <select name="sweets" multiple="multiple">
    <option>Chocolate</option>
    <option selected="selected">Candy</option>

    <option>Taffy</option>
    <option selected="selected">Caramel</option>
    <option>Fudge</option>
    <option>Cookie</option>

  </select>
  <div id="test"></div>
<script>
	$("input:[name=agree]").change(function(){
		 chooseAll();
	});
	function chooseAll(){
		var agreeFlag = $("input:[name=agree]:radio:checked").val();
		if (agreeFlag == "true")
		{
			
			$("#first input:radio").each(function(){
				var isAgree = $(this).attr("value");
				if (isAgree == "true")
				{
					$(this).attr("checked",true);
				}
			});
		}else if (agreeFlag == "false")
		{
			$("#first input:radio").each(function(){
				var isAgree = $(this).attr("value");
				if (isAgree == "false")
				{
					$(this).attr("checked",true);
				}
			});
		}
	}
    $("select").change(function () {
          var str = "";
          $("select option:selected").each(function () {
                str += $(this).text() + " ";
              });
          $("#test").text(str);
        })
        .change();
</script>

</body>
</html>


运行结果:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
jQuery 中,`change` 事件可能会被重复触发,这是因为它会在元素失去焦点的时候被触发,而在某些情况下,元素失去焦点的次数可能会很多。 为了解决这个问题,可以使用 `debounce` 或 `throttle` 函数来限制事件触发的次数。这两个函数都可以在一定时间内只执行一次函数,从而减少事件的触发次数。 下面是一个使用 `throttle` 函数来解决 `change` 事件重复触发的示例代码: ```javascript $(document).ready(function () { // 定义 throttle 函数,限制函数在一定时间内只执行一次 function throttle(fn, delay) { var timer = null; return function () { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function () { fn.apply(context, args); }, delay); }; } // 绑定 change 事件,使用 throttle 函数限制事件触发的次数 $('input[type="checkbox"]').on( 'change', throttle(function () { console.log('Checkbox changed.'); }, 1000) ); }); ``` 在上面的代码中,我们定义了一个 `throttle` 函数,它接受一个函数和一个延迟时间作为参数。在函数内部,我们使用了一个定时器来延迟函数的执行,如果在延迟时间内,函数被多次调用,那么只有最后一次调用能够执行。 然后,我们使用 `throttle` 函数来绑定 `change` 事件,并且设置延迟时间为 1000ms。这样,当复选框被点击时,事件只会在 1000ms 后被触发一次,从而解决了重复触发的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值