(this).parent().find('.classname')不起作用
(this).parent().find('.classname') not working
我试图有一个点击事件,用户点击一个div问题,然后Jquery克隆div答案,并显示在一个单独的div克隆。
的例子:http://jsfiddle.net/jessikwa/zNL63/2/
由于某种原因,下面的变量返回null。什么好主意吗?
var answer = $(this).parent().find(".faq-answer").clone();
完整代码:
$(document).ready(function () {
var faqQuestion = $('.faq-question');
var faqClone = $('.faq-clone');
faqQuestion.click(function () {
showAnswer();
});
faqClone.click(function () {
hideAnswer();
});
function showAnswer() {
$(".faq-clone").hide("slide");
$('.faq-clone').html("");
var answer = $(this).parent().find(".faq-answer").clone();
$('.faq-clone').append(answer.html());
$(".faq-clone").show("slide");
}
function hideAnswer() {
$(".faq-clone").hide("slide");
$('.faq-clone').html("");
}
});
解决这个问题最简单的方法是通过引用传递处理程序:
faqQuestion.click(showAnswer);
faqClone.click(hideAnswer);
现在showAnswer
和hideAnswer
里面的this
将被点击的元素
在函数中不能通过$(this)访问element。您需要将其作为参数传递。
试题:
function showAnswer(passedObject) {
$(".faq-clone").hide("slide");
$('.faq-clone').html("");
var answer = passedObject.parent().find(".faq-answer").clone();
$('.faq-clone').append(answer.html());
$(".faq-clone").show("slide");
}
,然后使用showAnswer($(this))
或更多逻辑&更干净的解决方案是@Kevin B建议的。
让它更简单,使用next()
jQuery函数
是否有任何原因要克隆一个隐藏元素,而只显示其克隆 ?
$(document).ready(function () {
var faqQuestion = $('.faq-question');
var faqClone = $('.faq-answer');
faqQuestion.click(showAnswer);
faqClone.click(hideAnswer);
function showAnswer() {
$(this).next('.faq-answer').show('slide');
}
function hideAnswer() {
$(this).hide("slide");
}
});
并将.faqClone
的CSS应用于.faq-answer
您甚至可以从数据属性生成简短的答案:)来缩短更多的HTML。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 尝试通过className获取元素;似乎不起作用
- .className() 似乎不起作用
- Javascript .className 不起作用
- Javascript createElement并添加className填充don'不起作用
- 应用JavaScript className更改和style.display='块'同时不起作用
- (this).parent().find('.classname')不起作用
- 切换className不起作用
- Js的className不起作用
- JS getElementsByClassName(ClassName) 不起作用:什么也没发生
- document.querySelectorAll([classname]) 在 IE9 中不起作用
- 删除 jQuery 但 .className += 不起作用