我有这个脚本,在调整窗口大小时使div成为一个链接。问题是,当我缩小时,div仍然会重定向。
代码:
$(window).resize(function() {
if ($(this).width() <= 1400) {
$("#settings").click(function() {
window.location = "settings.php";
});
} else {
$("#settings").click(function() {
$("#settingsDropdown").toggle();
});
}
}).triggerHandler('resize');
我尝试添加window.location = "#";
,但它不起作用。
答案 0 :(得分:1)
两个事件都已注册,您需要删除第一个事件处理程序,以便单击检查关闭事件
你可以这样做:$(window).resize(function() {
if ($(this).width() <= 1400) {
$("#settings").off( 'click' ); // <------ Add this line
$("#settings").click(function() {
window.location = "settings.php";
});
} else {
$("#settings").off( 'click' ); // <------ Add this line
$("#settings").click(function() {
$("#settingsDropdown").toggle();
});
}
}).triggerHandler('resize');
答案 1 :(得分:0)
您必须拥有unbind
个不再需要的事件处理程序
见unbind
答案 2 :(得分:0)
使用bind和unbind
$(window).resize(function() {
$("#settings").unbind('click.redirectOrToggle');
if ($(this).width() <= 1400) {
$("#settings").bind('click.redirectOrToggle', function() {
window.location = "settings.php";
});
} else {
$("#settings").bind('click.redirectOrToggle', function() {
$("#settingsDropdown").toggle();
});
}
}).triggerHandler('resize');
答案 3 :(得分:0)
不是绑定不同的处理程序,而是更改单击处理程序本身的逻辑,然后删除window.resize
/* called outside of window resize*/
$('#settings').click(function(){
if($(window).width() < 1400){
window.location = "settings.php";
}else{
$("#settingsDropdown").toggle();
}
})