最最直接的区别就是,一般$("#")指定的对象都是一个,而且引用也指向一个对象;
但是$(this)就不固定,例如循环遍历MyTable,$("#MyTable >tr").each(function(){ $(this) }),
这里面的$(this)就是每一次循环的tr的引用。
当然,你描述的循环到了MyTr的时候,$(this)获取到的对象 和 $("#MyTr")获取到的是一样的。
$(this)获取当前操作对象;$("#")获取指定ID的对象;
拿你的这个例子来说,如果你全文档只有一个ID为MyTr的元素那么你完全可以用$("#MyTr"),如果有两个或以上那么你就需要用$(this),当然也可以用$("#MyTr:eq(x)"),x为第x+1个#MyTr元素
得到的结果完全相同.
但注意这是二种完全不同的逻辑.
循环遍历 保证了从某父级中取得一个值.
直接使用$("#MyTr") ,我们只知道#MyTr" 可能在document文档中.
所在我建议你这样写代码.
在已知道父级的时候
$("#MyTable").find("#MyTr")
你都可以直接使用$("#MyTr")去获取该对象了还要循环遍历去获取干嘛,用$(this)表示当前操作的对象,如果你仅仅是遍历MyTable的话很可能获取的对象就是MyTable;