如何根据id选择使用不同参数运行相同的功能?
在JQuery中,选择了带value="+"
的输入按钮,然后我想确定它们的id是什么,然后用不同的参数调用javascript函数。
例如,选择了带id="Add_1"
的按钮,然后调用的函数为getData(0);
这是html(提取)
<html>
<head>
<link href="../css/coin_convert.css" rel="stylesheet" type="text/css">
<script src="coin_convert.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<div class="form">
<form name="coins">
<input type="button" value="+" id="Add_1" />
<input type="button" value="+" id="Add_2"/>
<input type="button" value="+" id="Add_3"/>
<input type="button" value="+" id="Add_4"/>
</form>
</div>
</body>
</html>
这是JQuery
$(document).ready(function() {
$("[value='+']").on("click", function() {
if($("[value='+']").is("Add_1")){
getData(0);
}
});
});
这是要调用的JavaScript函数
function getData(n){
var coin = new Array(4);
switch (n){
case 0:
coin[n]=document.getElementById('coin_dragon').value;
break;
case 1:
coin[n]=document.getElementById('coin_sky').value;
break;
case 2:
coin[n]=document.getElementById('coin_special').value;
break;
case 3:
coin[n]=document.getElementById('coin_legend').value;
break;
}
addition(coin[n]);
}
非常感谢!
答案 0 :(得分:1)
您需要使用.attr('id')
来查找ID属性。
为了让每个具有关联ID的元素都运行,你需要运行一个使用索引的循环,并根据该索引获取数据:
$(document).ready(function() {
$("[value='+']").each(function(index) {
$(this).click(function() {
if ($(this).attr('id') == 'Add_' + (index + 1)) {
getData(index);
}
});
});
});
在此示例中,只要单击值+
且ID以Add_
开头的元素,getData()
将触发,通过小于该值的Add_
在元素的ID中。点击ID不以getData()
开头的元素不会触发function myDirective($filter) {
/**
* Returns the directive definition object.
* It is meant to be used as follows:
*
* <my-directive></my-directive>
*/
return {
restrict: 'E',
scope: {local: '&'},
template: "<div> {{ local }} </div>",
link: function(scope, element, attrs) {
scope.local = Math.random();
}
}
。
我创造了一个展示这个here的工作小提琴。
希望这有帮助!
答案 1 :(得分:0)
您使用.attr(&#39; id&#39;)来获取元素的ID
if($("[value='+']").attr('id')== 'Add_1'){
getData(0);
}
答案 2 :(得分:0)
我可以根据您提供的代码提出一些新想法:
getData似乎只是调用&#39;添加(值)&#39;取决于单击的按钮。我重构了代码,在每个按钮上都包含一个数据属性,然后只传递它。
请参阅此小提琴示例:https://jsfiddle.net/88z1e4yu/
$(document).ready(function() {
$("#form-coin > input").on("click", function() {
getData($(this).data('coin'));
});
});
function getData(coin){
alert(coin);
addition(document.getElementById(coin).value);
}
答案 3 :(得分:0)
jQuery&#39; s .is()
function期望传递的参数是一个选择器。因此,您的is()
条件应该检查"#Add_1"
,而不是"Add_1"
if($("[value='+']").is("#Add_1")){
您可以使用Attribute Starts With Selector
交替使用它们$('[id^="Add_"]'))
稍后使用Attribute Ends With Selector
检查号码$('[id$="_1"]'))