【问题标题】:jQuery - Return Values Matching a pattern to an ArrayjQuery - 将模式与数组匹配的返回值
【发布时间】:2010-09-21 15:38:55
【问题描述】:

我的表单有几个动态添加的<p> 元素。这就是一个人的样子:

<p id="numbox-1" class="numbox">1</p>

我需要设置一个函数,以便在单击按钮时获取 id(id 将被标记为 numbox-1、numbox-2 等)以及所有它们的 p 元素的值页。

我需要将值传递给将处理它们的 php 脚本,如果我可以将数据作为数组获取,这样我就可以在 php 中使用 for 循环。

我一直在使用 JSON 来传递数据,但我不确定这是否是最好的方法,请指教,谢谢-

【问题讨论】:

    标签: php jquery arrays


    【解决方案1】:

    您可以为此使用.map(),例如:

    var arr = $('.numbox').map(function(){
                return { name: this.id, value: this.innerHTML };
              });
    

    然后您可以将其作为data 参数传递,例如:

    $.post("mypage.php", arr);
    

    这将导致名称/值对的 POST,如下所示:

    numbox-1=1&numbox-2=XX....
    

    【讨论】:

    • 这非常有效。快速跟进 - 是否可以在 arr 上附加另一个值对 - 如果可以,如何?
    • @jriggs - 你可以在使用之前添加到arr,例如arr.push({ name: 'someName', value: 'someValue' }); 然后使用它:)
    【解决方案2】:
    function getNumbox()
    {
        var objNumbox = new Array();
        $('.numbox').each(function(index){
            objNumbox[index] = $(this);
        });
        return objNumbox;
    }
    
    //Test it out
    $(document).ready(function(){
        var test = getNumbox();
        $(test).each(function(index){
            alert('ID: ' + $(test[index]).attr('id') + ' Text: ' + $(test[index]).text());
        });
    });
    

    【讨论】:

    • 第二个虽然我会使用上面帖子中提到的 .map() !
    【解决方案3】:

    我不确定你所说的“检查”按钮是什么意思,但也许这会有所帮助。

    $(function(){
      $("#send-button").click(function(){
        var data = [];
        $('.numbox').each(function(){
          var $this = $(this);
          data.push( {
            id: $this.attr('id'),
            value: $this.html()
          } );
        });
        $.post('myurl.php', { numboxes: data });
      });
    });
    

    单击#send-button 时,它会创建一个返回数组,其中包含每个数字框ID 和值的对象。然后它将该数组发布到服务器。

    【讨论】:

    • .val() 用于输入元素,这是&lt;p&gt;,不需要.attr("id"),您可以简单到this.id。此外,总体而言,您可以使用专门用于此目的的.map()
    • 是的,val() 是我的错字。虽然我同意 this.id 是正确的,但我只是给出了 jQuery 版本,以免混淆不知道原始 JavaScript 等效项的人。也就是说,我确实同意 .map() 的良好用法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多