function toggleFoo() {
var btn = $('button');
btn.click(function () {
var thisElem = $(this).closest('.parent').find('.children');
console.log(thisElem.length)
thisElem.style.display = (thisElem.style.display == 'none') ? 'block' : 'none';
});
};
$(document).ready(function() {
toggleFoo();
});
为什么我在尝试访问正确定义的元素undefined
以及可以访问哪个style.display
时获得length
?
答案 0 :(得分:3)
thisElem
是jQuery object,不是dom element引用,因此它没有style
属性。
如果您只想切换元素的显示,那么您只需使用jQuery中的.toggle()方法。
function toggleFoo() {
var btn = $('button');
btn.click(function() {
var thisElem = $(this).closest('.parent').find('.children');
console.log(thisElem.length)
thisElem.toggle();
});
};
$(document).ready(toggleFoo);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent">
<button>Click me</button>
<div class="children">
<h2>foo</h2>
</div>
</div>
&#13;
如果你想访问dom元素,那么你可以说
var thisElem = $(this).closest('.parent').find('.children')[0];
答案 1 :(得分:0)
请尝试输出:
function toggleFoo() {
var btn = $('button');
btn.click(function () {
var thisElem = $(this).closest('.parent').find('.children');
var display = (thisElem.css("display") == 'none') ? 'block' : 'none';
thisElem.css("display",display);
});
};
$(document).ready(function() {
toggleFoo();
});
答案 2 :(得分:0)
您需要访问dom才能获得style
属性。
使用$(this).closest('.parent').find('.children');
时,结果将包含在jQuery
对象中。要获取dom元素,请添加要定位的元素的键索引。例如在你的情况下[0]
。
因此:
var thisElem = $(this).closest('.parent').find('.children')[0];