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

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

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

4

4 回答 4

1

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

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

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

在这里工作演示:http: //jsfiddle.net/jfriend00/krTER/

于 2013-01-16T16:29:25.097 回答
0

因为input它在.subscriptiondiv 元素内,反之亦然。所以.subscription下面没有元素this......没有什么适用toggleClass()的。你到底想达到什么目的?

于 2013-01-16T16:29:18.577 回答
0
$('input.plan-select').change(function() {
  // alert('Handler for .change() called.');
  $([".subscription", this]).toggleClass('selected');
});

似乎在工作

于 2013-01-16T16:30:36.000 回答
0

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

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

你也可以使用

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

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

于 2013-01-16T16:34:35.867 回答