改变回调功能

时间:2013-01-16 16:27:18

标签: jquery

$('input.plan-select').change(function() {
  // alert('Handler for .change() called.');
  $(".subscription", this).toggleClass('selected');
});

小提琴:http://jsfiddle.net/XPVVp/

由于某些原因,它没有切换课程,我不确定它为什么不起作用。

4 个答案:

答案 0 :(得分:1)

那是因为.subscription select不是input元素的子元素,而是代码的编写方式。相反,.subscription元素是父元素,因此您需要使用正确的jQuery操作来找到正确的父元素,如下所示:

$('input.plan-select').change(function() {
  // alert('Handler for .change() called.');
  $(this).closest(".subscription").toggleClass('selected');
});

.closest()将查找父链,直到它找到与选择器匹配的第一个父级。

此处的演示演示:http://jsfiddle.net/jfriend00/krTER/

答案 1 :(得分:0)

因为input位于.subscription div元素内,反之亦然。因此,.subscription下面没有this元素......无法应用toggleClass()。你究竟想要实现什么目标?

答案 2 :(得分:0)

$('input.plan-select').change(function() {
  // alert('Handler for .change() called.');
  $([".subscription", this]).toggleClass('selected');
});

似乎正在运作

答案 3 :(得分:0)

我真的不知道你想用那个选择器做什么...... 您可以使用“this”选择器来获取单选按钮,然后使用.parent()指令上升一级。

$('input.plan-select').change(function() {
    // alert('Handler for .change() called.');
    $(this).parent().toggleClass('selected');
});

您也可以使用

$('.subscription').toggleClass('selected');

如果你只有一个所述类的元素。