【问题标题】:Get the value of button inside a Jquery Template获取 Jquery 模板中按钮的值
【发布时间】:2023-04-11 02:02:02
【问题描述】:

好的,我正在循环一个 JSON 数据集并使用 Jquery 模板填充一个 div。对于每个循环,我创建一个带有值的按钮。

现在,我使用以下方法将点击事件连接到循环内的一个函数:

<button id="btnAddGoodGuy" class="btn  btn-success btn-xs" type="button" data-toggle="tooltip" data-original-title="Good guy?" onclick=" addGoodGuy(event); " value="${MatchedString}"><i class="fa fa-user-md"></i></button>

我的问题,是函数 addGoodGuy 中按钮的值始终是第一个值。因此,在我的循环中,如果三个按钮的值分别为 a 值 b 和 c 值,无论我点击了哪个按钮,我总是会得到 a 值。

到目前为止,我的 addGoodGuy 函数如下所示:

    function addGoodGuy(event) {
           event.preventDefault();
           $('[data-toggle="tooltip"]').tooltip();
           var matchedItem = $('#btnAddGoodGuy').val();
           alert("The value is " + matchedItem);
     }

如何获取函数中的各个按钮值?

【问题讨论】:

  • 您有几个 ID 为“btnAddGoodGuy”的按钮,对吗?试试这样的: var matchItem = $(this).val();
  • 是相同的 id,不同的值。
  • 您的 ID 在每个元素上必须是唯一的。
  • 同一个 id,当然是个笨蛋。

标签: jquery


【解决方案1】:

您不能对不同的按钮使用相同的id="btnAddGoodGuy"。试试这个方法:

<button class="btn btn-success btn-xs" type="button" data-toggle="tooltip" data-original-title="Good guy?" onclick=" addGoodGuy(event, this); " value="${MatchedString}"><i class="fa fa-user-md"></i></button>

和功能

function addGoodGuy(event, element) {
       event.preventDefault();
       $('[data-toggle="tooltip"]').tooltip();
       var matchedItem = element.value;
       alert("The value is " + matchedItem);
 }

【讨论】:

    【解决方案2】:

    首先你需要让你的ids 是唯一的(否则它是无效的 html

    那么你应该避免使用事件属性(内联脚本)并通过jQuery绑定处理程序。

    <button id="btnAddGoodGuy" class="btn  btn-success btn-xs" type="button" data-toggle="tooltip" data-original-title="Good guy?" value="${MatchedString}"><i class="fa fa-user-md"></i></button>
    

    并将处理程序绑定到容器div您正在填充的那个

    $('containerDivId').on('click', 'button.btn', function(e){
        e.preventDefault();
        var value = this.value;
        alert("The value is " + value);
    });
    

    【讨论】:

    • Gaby,由于某种原因,当我使用 Jquery 模板时,这样的绑定不起作用。我花了很多小时试图让按钮触发,更不用说获得价值了
    • 话虽如此,我没有使用这种方法,所以我会给一个bash
    • @CSharpNewBee 您需要使用.on 的委托版本(我发布的版本),在其中将选择器传递给它以匹配后代元素。如果您可以发布一些 html,我可以提供更准确的解决方案。这意味着您只需绑定一次,即使您稍后重新填充 div,它也会处理该事件..
    • 为简洁起见,我已将原始模板代码放入 fiddler jsfiddle.net/BnN4w
    • @CSharpNewBee,您通常在模板中使用ids,如果多次应用模板,这是一种不好的做法。 (您需要在每次插入之前更改它们或完全删除它们)。只要您将我使用的#containerDivId 更改为属于所有应用模板的容器元素的#containerDivId,发布的代码就应该可以工作。
    猜你喜欢
    • 2015-04-13
    • 2016-02-13
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 2013-10-14
    • 2012-06-20
    • 1970-01-01
    • 2015-12-26
    相关资源
    最近更新 更多