[英]Combining two change functions
如何将.change
这两种不同用法结合起来以实现一个功能?
两者都使用$('input[name="menu"]')
但在语义上有所不同,因此我不确定将两者结合的正确方法。
我试图把$(".menu[data-id=" + this.id + "]").toggleClass("active", this.checked);
在.on("change"), function ()
没有任何运气。
$('input[name="menu"]') .change(function() { $(".menu[data-id=" + this.id + "]").toggleClass("active", this.checked); }) .change(); $(function() { $('input[name="menu"]').on("change", function() { if ( $(this) .closest('[class*="list-"]') .is(".list-custom") ) { if ($(this).is(":checked")) { $(this) .siblings("[data-icon]") .attr("data-prefix", "fas") .closest(".launch-icon") .addClass("checked"); } else { $(this) .siblings("[data-icon]") .attr("data-prefix", "far") .closest(".launch-icon") .removeClass("checked"); } } }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如果是我,我将像这样合并您的代码,但是如果您正在寻找问题的真正解决方案,请提供html标记和有效的代码段。
// Starting point.
$(document).ready(function()
{
// Register listener for the change event.
$('input[name="menu"]').change(function()
{
// This was on the first listener of change event.
$(".menu[data-id=" + this.id + "]").toggleClass("active", this.checked);
// This was on the second listener of change event.
if ($(this).closest('[class*="list-"]').is(".list-custom"))
{
if ($(this).is(":checked"))
{
$(this).siblings("[data-icon]").attr("data-prefix", "fas")
.closest(".launch-icon").addClass("checked");
}
else
{
$(this).siblings("[data-icon]").attr("data-prefix", "far")
.closest(".launch-icon").removeClass("checked");
}
}
});
// Trigger a change event on the input element.
// This was after the first event listener (why?)
$('input[name="menu"]').change();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.