所选元素具有相同的值,但ID不同

时间:2017-02-28 19:04:52

标签: javascript jquery html

如何根据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]);

}

非常感谢!

4 个答案:

答案 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"]'))