2012-09-10 24 views
10

tôi có bộ sưu tập của các yếu tố lựa chọn, khi tôi thay đổi giá trị của một nguyên tố chọn cho lần đầu tiên chức năng này không làm việc nó hoạt động lần thứ hai tôi thay đổi giá trị và trong giao diện điều khiển Tôi có thisJquery: Sử dụng thuộc tính được chỉ định của thuộc tính không được chấp nhận. Nó luôn luôn trả về true

mã 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 code:

<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> 
+2

Vui lòng đăng phần có liên quan của mã của bạn. Và bạn có chắc chắn thông báo này là do thay đổi giá trị của các yếu tố này (hoặc nó có thể là cái gì khác)? –

+0

BTW, thay vì sử dụng .parent(). Parent(), bạn có thể muốn sử dụng .end() thay vì "hoàn tác" các hoạt động chuỗi "phá hoại" trước đó. Tôi tin rằng bạn sẽ nhận được hiệu suất tốt hơn theo cách đó, mặc dù tôi đã không thực sự đo lường điều này. http://api.jquery.com/end/ – iX3

+0

Vui lòng bao gồm HTML có liên quan cũng như JavaScript/jQuery. Để có được câu trả lời tốt hơn nhanh hơn, tôi khuyên bạn nên đăng một ví dụ minh họa sự cố cho một công cụ trực tuyến như JS Fiddle: http://jsfiddle.net/ – iX3

Trả lời

1

Hãy thử thay đổi

var collection = $('select.ddlJ') 

sử dụng jQuery.get()

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

Cung cấp cho bạn các yếu tố DOM thực tế chứ không phải là một đối tượng jQuery phù hợp với họ. Ngoài ra (và cách tôi có lẽ sẽ làm điều đó), sẽ được thay đổi

for (var element in collection) 

sử dụng jQuery.each()

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

Tôi đã thay đổi như bạn đã nói và vẫn sử dụng thuộc tính được chỉ định của thuộc tính không được chấp nhận. Nó luôn luôn trả về sự thật. [Break On This Error] \t ...], tiến trình: [c, "thông báo"]}, hàm (a, b) {var c = b [0], e = b [1], g; f .isFunction (c)? i [a] (... jquery .... min.js (dòng 2) – Alex

+0

OK, vậy thì có lẽ cũng có cái gì đó khác, nhưng phần đó nhảy ra ngoài với tôi như là một sai lầm. không nhìn thấy bất cứ điều gì ngay lập tức rõ ràng trong mã của bạn, nơi bạn đang truy cập bất kỳ thuộc tính.Bạn có gặp phải lỗi này trong tất cả các trình duyệt? Bạn đang sử dụng phiên bản nào? Tôi sẽ xem xét thêm nếu bạn có thể cung cấp một ví dụ trực tiếp (ví dụ: jsFiddle - Tôi rất vui được giúp giải quyết vấn đề, nhưng tôi không cố gắng tái tạo vấn đề của bạn - tôi chỉ muốn làm phần thú vị: D) – iX3

+0

Điều này có giải quyết được vấn đề của bạn không? Tôi giả định rằng bạn đã làm việc đó, nhưng có lẽ bạn có thể muốn đăng thêm một số thông tin cho những người dùng khác có thể có một vấn đề tương tự. – iX3

1

Hãy thử thay đổi .val() để .attr ('giá trị')

+0

không có gì thay đổi: ( – Alex

+1

Điều này đã dừng lỗi cho tôi. Nhưng tôi đọc rằng .val() được ưu tiên .attr ('value'), partiucularly cho các hộp chọn là tình huống của tôi ... – rigyt

+0

Làm việc cho tôi quá .. –

Các vấn đề liên quan