JQuery使用变量选择单选按钮

JQuery selecting radio button using a variable

本文关键字:选择 单选按钮 变量 JQuery      更新时间:2023-09-26

我试图使用变量选择一个单选按钮,但是,虽然我可以打印选中的值,但按钮不保持选中。

这个按钮在angular模板中定义如下:

<a ng-click="selectNode($event, node)">
    <input type="radio" name="library" style="float:left;" id="id-{{n}}" />
</a>

其中id是GUID,所以绝对是唯一的。

然后,因为当按钮被选中时调用的是角点击事件,所以我在selectNode中调用这段代码:

context.selectedNodes = [node];
$scope.selectedNode = node.$model.name;
var id = '#id-' + node.$model.id;
//console.log(typeof id);
//console.log(id);
$(id).prop("checked", true);
alert($("[name=library]:checked").val())

理论上应该检查单选按钮。然而,它检查了一会儿(当我调用警报时检查),然后似乎消失了。然而,我能够硬编码在一个id,它保持检查。

我建议您深入研究angular提供的工具,以便简单地处理这些事情。如果您需要跟踪该输入的值,请将其绑定到一个模型。如果希望在复选框更改后处理某些内容,请使用ng-change并将其绑定到一个函数。

<input type="radio" name="library" style="float:left;" ng-model=libraryModel ng-change="doSomething()" />

记住doSomething()需要在作用域中,所以在你的控制器中,你需要将函数定义为$scope.doSomething()。您的模型也将附加到$scope对象上,因此您可以将其引用为$scope. librarymodel。您可以根据需要将模型初始化为控制器中的默认值true或false,然后任何用户更改都将自动更新此值。

你把jQuery和Angularjs混在一起了,这是不值得的。如果你在你的项目中使用AngularJS,你可以使用AngularJS ngModel

控制器

function Controller($scope) {
  //Init data input to value 1
  $scope.data = ['1'];
}

<input type="radio" name="name" value="1" ng-model="data">
<input type="radio" name="name" value="2" ng-model="data">

这里,我们的$scope.data在控制器中被设置为1,因此它将与第一个输入匹配。