编写此嵌套jQuery命令如何正确?

时间:2019-07-01 00:58:42

标签: javascript jquery jquery-masonry gridsplitter

我需要类似的东西:

function Splitter() {
    if ($(window).width() < 350) OR ($('#right-area').width() < 600) {
        $('.grid-item').css("width", "100%")
    }
    if ($(window).width() < 800) OR ($('#right-area').width() < 800) {
        $('.grid-item').css("width", "50%")
    }
    else {
        $('.grid-item').css("width", "33.3333%")
    }
}

写那个正确吗?如果我将OR替换为||,它将无法正常工作。

3 个答案:

答案 0 :(得分:1)

您应该尝试:

function validateData() {

    let sesion = @ViewData["Session"];

    if (sesion == 0) {
        Swal.fire({
            type: 'error',
            title: 'Oops...',
            text: '¡Usted no ha iniciado sesión!',
            footer: '<a asp-controller="Home" asp-action="Login">Iniciar sesión</a>'
        })

    }
}

我以为您在声明中忘记了“(”或“)”

答案 1 :(得分:0)

使用if时,必须将所有对应的条件包装在单个括号中。

请考虑以下内容:

if (a) || (b)   // invalid
if (a || b)     // valid
if ((a) || (b)) // valid

此外,我相信您的逻辑有些偏离。

假设$(window).width()200

您的第一个条件为true,因此$(".grid-item")被设置为width: 100%

第二个if也是也是 true,因此$(".grid-item")被设置为width: 50%

在任何情况下都不会触发$('.grid-item').css("width", "100%")并且不会立即被$('.grid-item').css("width", "50%")覆盖。


我认为这可能更符合您的需求:

function Splitter() {
    if ($(window).width() < 350 || $('#right-area').width() < 600) {
        $('.grid-item').css("width", "100%")
    }
    else if ($(window).width() < 800 || $('#right-area').width() < 800) {
        $('.grid-item').css("width", "50%")
    }
    else {
        $('.grid-item').css("width", "33.3333%")
    }
}

答案 2 :(得分:0)

我建议您使用其他方法。您可以尝试将jQuery#css与函数回调一起使用:

var banner = $("#banner-message")
banner.css('width', () => {
	const	windowWidth = $(window).width();
	const rightAreaWidth = $('#right-area').width();
	return windowWidth < 350 || rightAreaWidth < 600 ? '100%' : windowWidth < 800 || rightAreaWidth < 800 ? '50%' : '33%';
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="banner-message">
</div>