代码之家  ›  专栏  ›  技术社区  ›  Victor

标签的jquery集属性

  •  3
  • Victor  · 技术社区  · 14 年前

    是否可以使用jquery设置“for”(associatedcontrolid)属性?我正尝试这样做,将其设置为标签后出现的下一个控件:

    $('label.asssociateClass').each(function()
    {
    
          var toAssociate = $(this).next(':input');
    
          $(this).attr("for", toAssociate.attr("id"));
    
    });
    

    问题是,如果我不通过AssociatedControlID在服务器上设置它,它就永远不会到达这里,因为它被呈现为 span 而不是 label 在这种情况下。有没有办法克服这个问题,或者我必须在服务器上完成它?

    2 回复  |  直到 11 年前
        1
  •  3
  •   Nick Craver    14 年前

    可以使用 .replaceWith() 这样地:

    $('span.asssociateClass').each(function() {
      var l = $("<label class='associateClass' />")
               .html($(this).html())
               .attr('for', $(this).next(":input").attr("id"));
      $(this).replaceWith(l);
    });​
    

    下面是一个简单的例子: http://jsfiddle.net/V73WL/

        2
  •  0
  •   vittore    14 年前

    不能更改asp:label的行为,但是可以使用jquery更改标记

    $(function () {
        var spans = $('span.label').each(function() {
            input = $(this).next('input');      
            $('<label />').html($(this).html()).attr('for', input.attr('id')).insertBefore(input);
            $(this).remove();
        });
    });