今天我在使用jquery時遇到了一個奇怪的問題,我嘗試設(shè)置一個元素的寬度,但是發(fā)現(xiàn)設(shè)置了并沒有生效。
我檢查了代碼多次,確定自己沒有寫錯,也嘗試過用其他的方式設(shè)置寬度,比如使用css()方法,但是都沒能解決問題。最后我決定在終端打印出元素的寬度,看看到底設(shè)置了多少。
于是我寫了下面的代碼:
結(jié)果打印出來的結(jié)果是:
可以看出終端打印的結(jié)果是正確的,元素的寬度確實被改變了。但是為什么在頁面上沒有生效呢?
我仔細看了一下頁面的html結(jié)構(gòu),發(fā)現(xiàn)了問題。原來我設(shè)置寬度的元素是一個inline-block元素,并且它的寬度是由它的內(nèi)容撐開的,因此設(shè)置寬度并沒有生效。
為了解決這個問題,我需要將元素的display屬性設(shè)置為block,然后才能成功設(shè)置寬度。
這樣就能成功設(shè)置元素的寬度了。
總結(jié)一下,在jquery設(shè)置元素寬度不生效時,需要注意元素的display屬性和寬度是否由內(nèi)容撐開。如果是inline-block元素或?qū)挾扔蓛?nèi)容撐開的元素,需要先將其display屬性設(shè)置為block,然后再設(shè)置寬度。
我檢查了代碼多次,確定自己沒有寫錯,也嘗試過用其他的方式設(shè)置寬度,比如使用css()方法,但是都沒能解決問題。最后我決定在終端打印出元素的寬度,看看到底設(shè)置了多少。
于是我寫了下面的代碼:
console.log($('div').width()); $('div').width(200); console.log($('div').width());
結(jié)果打印出來的結(jié)果是:
100 200
可以看出終端打印的結(jié)果是正確的,元素的寬度確實被改變了。但是為什么在頁面上沒有生效呢?
我仔細看了一下頁面的html結(jié)構(gòu),發(fā)現(xiàn)了問題。原來我設(shè)置寬度的元素是一個inline-block元素,并且它的寬度是由它的內(nèi)容撐開的,因此設(shè)置寬度并沒有生效。
為了解決這個問題,我需要將元素的display屬性設(shè)置為block,然后才能成功設(shè)置寬度。
$('div').css('display', 'block'); $('div').width(200);
這樣就能成功設(shè)置元素的寬度了。
總結(jié)一下,在jquery設(shè)置元素寬度不生效時,需要注意元素的display屬性和寬度是否由內(nèi)容撐開。如果是inline-block元素或?qū)挾扔蓛?nèi)容撐開的元素,需要先將其display屬性設(shè)置為block,然后再設(shè)置寬度。