jQuery attr似乎没有返回字符串?

Wil*_*iam 4 javascript jquery

我有以下代码:

JS:

var test2 = ['RMrpi5Z8doc','JIPbUaqyYx0','MbjXYg0YRmw'];

    $('tr').live('click', function(event){
      $($(this).attr('class').split(' ')).each(function() { 
        if (!((this == 'even') || (this == 'odd'))) {
            alert(jQuery.inArray(this, test2));
            if (this == 'RMrpi5Z8doc') {
              alert(this);
            }
        }   
      });
    });
Run Code Online (Sandbox Code Playgroud)

HTML:

  <table>
   <tr class="odd RMrpi5Z8doc">
     <td>Kite</td>
     <td>Just Like Vinyl</td>
     <td>Audiotree</td>
   </tr>
  </table>
Run Code Online (Sandbox Code Playgroud)

inArray不匹配并返回-1.与文字字符串匹配的if语句匹配.如果我在inArray的文字中替换,那也匹配.

我看过一篇文章说jQuery attr不再返回字符串了,但是查看jQuery网站上attr的文档似乎就是这样说的.

也许我应该以一种完全不同的方式来解决这个问题?

T.J*_*der 5

你错了each.你的意思是jQuery.each,通用迭代器:

$.each($(this).attr('class').split(' '), function ...);
Run Code Online (Sandbox Code Playgroud)

each,jQuery实例上的实例函数:

$($(this).attr('class').split(' ')).each(function ...); // Wrong
Run Code Online (Sandbox Code Playgroud)

特别是,正在发生的是上述的这一部分:

$($(this).attr('class').split(' '))
Run Code Online (Sandbox Code Playgroud)

... $()使用数组调用,这不符合您的要求.:-)

  • @ raina77ow:的确,我做了很小的改动,但是我绝对提倡使用直接反射属性(`this.className`而不是`$(this).attr('class')`)每当属性可靠时(和` className`是). (3认同)
  • ...或者只是`$ .each(this.className.split(''),function ...)` (2认同)