【问题标题】:Jquery: Use of attributes' specified attribute is deprecated. It always returns true [duplicate]Jquery:不推荐使用属性的指定属性。它总是返回 true [重复]
【发布时间】:2012-09-10 12:54:30
【问题描述】:

我有选择元素的集合,当我第一次更改一个选择元素的值时,此功能不起作用,第二次更改值时它起作用,并且在控制台中我有

jQuery 代码:

$(document).ready(function () {
    var collection = $('select.ddlJ');
    console.log(collection);
    for (var element in collection) {
        $(element).change(function () {

            $('select.ddlJ').change(function (e) {
                $(this).parent().parent().find('td:last').prev().find('span').html(
                    $(this).parent().parent().find('select.ddlJ').filter(function () {
                        return $.trim($(this).val()) == 'm';
                    }).length);

                $(this).parent().parent().find('td:last span').html(
                $(this).parent().parent().find('select.ddlJ').filter(function () {
                    return $.trim($(this).val()) == 'n'; }).length);
            });
        });
    }
});

HTML 代码:

<table cellspacing="0" border="1" style="border-collapse:collapse;" id="grid1"
   rules="all">
        <tbody><tr>
 <th scope="col">Nr de ord</th>
 <th scope="col">StudentId</th>
 <th scope="col">Name LName</th>

 <th scope="col">
      <span id="mondayText">monday<br></span>
      <span id="monday">14.05.2012</span>
  </th>
<th scope="col">
     <span id="thuesdayText">thuesday<br></span>
     <span id="thuesday">15.05.2012</span>
</th>
<th scope="col">
     <span id="wednesdayText">wednesday<br></span>
     <span id="wednesday">16.05.2012</span>
</th>
<th scope="col">
     <span id="thursdayText">thursday<br></span>
     <span id="thursday">17.05.2012</span>
</th>
<th scope="col">
     <span id="fridayText">friday<br></span>
     <span id="friday">18.05.2012</span>
</th>
<th scope="col">
     <span id="saturdayText">saturday<br></span>
     <span id="saturday">19.05.2012</span>
  </th>
   <th scope="col">
   <span id="M">Total1</span>
   </th>
  <th scope="col">
   <span id="N">Total2</span>
   </th>
               </tr><tr>
                <td>  1  </td>
                <td>110001</td>
                <td>Test1 Test1</td><td>
                </td><td>
                </td><td>
                </td><td>
 <select class="ddlJ" id="a1111_0" name="ctl00$contentbody$grid1$ctl02$a1111">
                <option value="a" selected="selected">a</option>
                <option value="m">m</option>
                <option value="n">n</option>
            </select>
 <select class="ddlJ" id="a2222_0" name="ctl00$contentbody$grid1$ctl02$a2222">
                <option value="a" selected="selected">a</option>
                <option value="m">m</option>
                <option value="n">n</option>
            </select>

                          </td><td>
                          </td><td>
                          </td><td>
                          <span class="label" id="totalM"></span>
                          </td><td>
                           <span id="totalN"></span>
                          </td>
        </tr><tr>
        <td> 2   </td>
                <td>110002</td>
                <td>Test2 Test2</td>
                <td></td>
               <td></td>
               <td></td><td>
 <select class="ddlJ" id="a1111_1" name="ctl00$contentbody$grid1$ctl03$a1111">
                <option value="a" selected="selected">a</option>
                <option value="m">m</option>
                <option value="n">n</option>
            </select>

                </td><td>
                </td><td>
                </td><td>
                <span class="label" id="totalM"></span>
                 </td><td>
                 <span id="totalN"></span>
                  </td>
        </tr><tr>
            <td>
                         3                  
                </td><td>110008</td><td>Test3 Test3</td><td>
                </td><td>
                </td><td>
                </td><td>
<select class="ddlJ" id="a1111_2" name="ctl00$contentbody$grid1$ctl04$a1111">
                <option value="a" selected="selected">a</option>
                <option value="m">m</option>
                <option value="n">n</option>
            </select>
                         </td><td>
                </td><td>
                </td><td>
                 <span class="label" id="totalM"></span>
                </td><td>
                  <span id="totalN"></span>
                          </td>
        </tr>
    </tbody>
</table>

【问题讨论】:

  • 请发布您的代码的相关部分。您确定此通知是由更改这些元素的值引起的(或者可能是其他原因)?
  • 顺便说一句,您可能希望使用 .end() 而不是使用 .parent().parent() 来“撤消”先前的“破坏性”链操作。我相信你会以这种方式获得更好的性能,尽管我没有实际测量这一点。 api.jquery.com/end
  • 请包括相关的 HTML 以及 JavaScript/jQuery。为了更快地得到更好的答案,我强烈建议在 JS Fiddle 等在线工具上发布一个演示问题的示例:jsfiddle.net

标签: javascript jquery onchange


【解决方案1】:

【讨论】:

  • 请将问题标记为重复问题,而不是使用指向另一个答案的链接进行回答。
【解决方案2】:

尝试改变

var collection = $('select.ddlJ')

使用jQuery.get()

var collection = $('select.ddlJ').get();    
// BTW, this is similar to $('select.ddlJ')[0] 

这为您提供了实际的 DOM 元素,而不是匹配它们的 jQuery 对象。或者(以及我可能会这样做的方式),将改为更改

for (var element in collection)

使用jQuery.each()

$('select.ddlJ').each(function(i, element) { ... });

【讨论】:

  • 我按你说的改了,还是一样 不推荐使用属性的指定属性。它总是返回 true。 [中断此错误] ...],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction( c)?i[a](... jquery....min.js (第 2 行)
  • 好的,那么可能还有别的东西,但那部分跳出来让我觉得是个错误。在您访问任何属性的代码中,我没有立即看到任何明显的东西。您是否在所有浏览器中都遇到此错误?您使用的是哪个/版本?如果你能提供一个活生生的例子,我会进一步研究(例如 jsFiddle——我很乐意帮助解决问题,但我试图重现你的问题没有意义——我只是想找点乐子部分:D)
  • 这解决了您的问题吗?我从未见过真正的问题。我假设你已经成功了,但也许你可能想为可能有类似问题的其他用户发布更多信息。
  • 我在安装了 Firebug 和 FireQuery 的 Firefox 中也有同样的警告。使用 $("selector for select").val() 会给我这个警告。我忽略了这个警告,因为它似乎无关紧要。
【解决方案3】:

尝试将 .val() 更改为 .attr('value')

【讨论】:

  • 这为我停止了错误。但我读到 .val() 比 .attr('value') 更受欢迎,特别是对于我的情况的选择框...
猜你喜欢
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 2017-12-29
  • 2013-07-13
  • 2015-10-22
  • 2011-11-29
相关资源
最近更新 更多