比较“;这个“;DOM数组中具有object的对象
Comparing "this" object with Object in DOM Array
这个问题是我提出这个问题的根本原因。
隐藏所有下一个tr td直到下一个trth
由于已经发布了两个答案,我想尝试一些不同的
Javascript:
$(function(){
var thList = $('td');
$('td').click(function(){
for( i =0; i < thList.length;i++){
// What to do here
}
});
});
HTML:
<table border="2">
<tr>
<td> 1 </td>
<td> 2 </td>
<td> 3 </td>
</tr>
<table>
我在这里做的是将单击事件分配给<TH>
元素。在加载时,我在数组中获取DOM中的所有<TH>
。
现在,我的逻辑是。迭代for循环,如果单击的TH
不是for loop
中的那个,那么隐藏它。
我试过的是
if ( thList[i] != $(this)) { thList[i].style.display = 'none' }
但这似乎并不奏效。我需要在那里放什么代码来比较对象
除了示例标记不包含任何th
-元素之外,您还可以尝试以下操作:
$('td').click(function(){
var $tdList = $('td').not(this); // <- get all th's and exlude the clicked element
$tdList.each(function(){this.style.display = 'none'; });
});
或者更好的是,使用jQuery,您不需要每个包装器:
$tdList.hide();
由于jQuery为您节省了大量工作,请尽可能使用它——使用each()
而不是循环,使用.css()
(甚至更专用的方法,如.hide()
)而不是本机.style
——这将大大缩短您的代码。
您可以使用:
thList.click(function() {
thList.not(this).css("display", "none");
});
出于性能原因,您可以委托事件:
$("#yourtable").on("click", "th", function(event) {
thList.not(event.target).css("display", "none");
});
我没有测试,但应该有效。
然而,我对用户界面很好奇:如果TH以这种方式隐藏,那么在第一次点击其中任何一个后,它们都无法再显示。
1-您的$(this)
与this
不同一次是jquery对象2-你没有TH元素,这是你想要的类似代码,但有td的
$(function(){
var tdList = $('td');
$('td').click(function(){
tdList.hide();
$(this).show();
//OR tdList.not(this).hide();
});
});
当您访问jQuery对象中的项时,您会将它们作为DOM元素,而不是新的jQuery对象。因此,您应该直接将其与元素引用进行比较,而不是将元素引用包装在jQuery对象中:
for (i = 0; i < thList.length; i++) {
if ( thList[i] != this) { thList[i].style.display = 'none' }
}
您也可以使用not
方法来获得不包含当前元素的集合:
thList.not(this).each(function(){ this.style.display = 'none'; });
当然,使用css
方法会变得更简单:
thList.not(this).css('display', 'none');
注意:表中的单元格并不是真正独立的元素,您可以在不影响表中其他单元格的情况下隐藏这些元素。当您将单元格隐藏在表中时,该表可能会显示意外行为。
- 如何使用object.assign()从其他对象引用基本对象属性
- JSON.stringify和Object.keys在同一个对象上产生不同的结果
- 在使用object.create创建的对象中使用super
- JavaScript-从对象数组中输出随机OBJECT
- 什么是“;原型;通过JavaScript中的Object Literal Notation创建的对象的链接
- 'object对象'在firefox中,wehn引用了jquery
- 在 JavaScript 中依赖全局本机对象是否安全,尤其是 Object 对象
- 为什么 Object 对象中的某些属性不会在子对象中继承
- 设计:为什么JavaScript有单独的Function和Object对象,以及为什么它们有自己单独的原型对象
- 带有外部依赖项的Jasmine单元测试指令失败,类型错误:'[object对象]'
- (Object对象)没有方法效果
- 是object.x和object.y对象's在浏览器中的位置
- Object对象数组Json.字符串数组的字符串化
- Node.js Object对象没有方法'hasOwnProperty'
- 当试图为href获取attr时获取#[object对象]
- object对象转换为字符串数组
- 在Angular2应用程序中渲染JSON对象会得到“object”对象
- JSON返回Object对象
- 用一个所有对象都可以使用的函数扩充Object对象
- Knockout Javascript选择返回Object对象