亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

new一個實例出現的問題?

new一個實例出現的問題?

千萬里不及你 2019-03-21 18:15:25
html:<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>test</title>    <link rel="stylesheet" href="./showbox.css"></head><body>    <script src="./jQuery-1.12.4.js"></script>    <script src="./showbox.js"></script>    <script>        $(function(){            var box = new ShowBox();            box.push('hello world');        });    </script></body></html>js:(function(){    function ShowBox(){};    ShowBox.prototype = {        push:function(content){           var layer = '<div class="showbox_layer"></div>';           if(content){              $('html,body').html(layer);           }         }    }    window.ShowBox = ShowBox;}());頁面中的jquery正常引入。問題:運行頁面后,F12調出控制臺。head部分沒有內容,同時頁面樣式也未能生效。(已確定引入樣式)
查看完整描述

2 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

為什么要使用$('html,body')?
$('html,body')選中的是兩個元素,也就是html元素和body元素,.html方法是把元素的內容用.html的參數完全覆蓋。

也就是首先html元素的內容完全被<div class="showbox_layer"></div>替換,可能是給html添加元素的時候,因為div不是html的有效元素,所以會生成一個空的head標簽,一個空的body標簽,然后把<div class="showbox_layer"></div>放入body里;

然后是body元素的內容完全被<div class="showbox_layer"></div>替換,因為替換前body就只有<div class="showbox_layer"></div>,所以替換后和替換前展示的內容是一樣的。

所以就導致了截圖中的效果,你沒有發現不僅head空了,bodyscript標簽也沒有了嗎。

所以首先把$('html,body')修改為$('body'),然后把.html方法替換為.prepend或者.append方法:

$('body').prepend(layer);

是否用.prepend方法替換.html方法要看你的需求,如果你的需求就是完全替換,那么用.html方法就行,如果是添加的話,還是換為.prepend或者.append比較好。


查看完整回答
反對 回復 2019-04-06
  • 2 回答
  • 0 關注
  • 483 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號