麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

jQuery入門第二天&&&正則表達(dá)式完結(jié)篇——仿smarty引擎的制作

2019-11-14 14:41:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  hi

周一完全的不在狀態(tài)。。。中午還去觀戰(zhàn),沒(méi)有睡覺(jué)的我,晚上的smarty不知道能不能做完,加油吧

1、jQuery

---過(guò)濾性選擇器(二)---

--[attribute=value]屬性選擇器

屬性作為DOM元素的一個(gè)重要特征,也可以用于選擇器中,從本節(jié)開(kāi)始將介紹通過(guò)元素屬性獲取元素的選擇器,[attribute=value]屬性選擇器的功能是獲取與屬性名和屬性值完全相同的全部元素,其中[]是專用于屬性選擇器的括號(hào)符,參數(shù)attribute表示屬性名稱,value參數(shù)表示屬性值。

<h3>改變"title"屬性值為"蔬菜"的背景色</h3>
<ul>
<li title="蔬菜">茄子</li>
<li title="水果">香蕉</li>
<li title="蔬菜">芹菜</li>
<li title="水果">蘋(píng)果</li>
<li title="水果">西瓜</li>
</ul>

<script type="text/javascript">
$("li[title='蔬菜']").CSS("background-color", "green");

[attribute=value]屬性選擇器正好相反,[attribute!=value]屬性選擇器的功能是獲取不包含屬性名,或者與屬性名和屬性值不相同的全部元素,其中[]是專用于屬性選擇器的括號(hào)符,參數(shù)attribute表示屬性名稱,value參數(shù)表示屬性值。

--[attribute*=value]屬性選擇器

介紹一個(gè)功能更為強(qiáng)大的屬性選擇器[attribute*=value],它可以獲取屬性值中包含指定內(nèi)容的全部元素,其中[]是專用于屬性選擇器的括號(hào)符,參數(shù)attribute表示屬性名稱,value參數(shù)表示對(duì)應(yīng)的屬性值。

<h3>改變"title"屬性值包含"果"的背景色</h3>
<ul>
<li title="蔬菜">茄子</li>
<li title="水果">香蕉</li>
<li title="蔬菜">芹菜</li>
<li title="人參果">小西紅柿</li>
<li title="水果">西瓜</li>
</ul>

<script type="text/Javascript">

$("li[title*='果']").css("background-color", "green");

--:first-child子元素過(guò)濾選擇器

通過(guò)上面章節(jié)的學(xué)習(xí),我們知道使用:first過(guò)濾選擇器可以獲取指定父元素中的首個(gè)子元素,但該選擇器返回的只有一個(gè)元素,并不是一個(gè)集合,而使用:first-child子元素過(guò)濾選擇器則可以獲取每個(gè)父元素中返回的首個(gè)子元素,它是一個(gè)集合,常用多個(gè)集合數(shù)據(jù)的選擇處理。

<h3>改變每個(gè)"蔬菜水果"中第一行的背景色</h3>
<ol>
<li>芹菜</li>
<li>茄子</li>
<li>蘿卜</li>
<li>大白菜</li>
<li>西紅柿</li>
</ol>
<ol>
<li>橘子</li>
<li>香蕉</li>
<li>葡萄</li>
<li>蘋(píng)果</li>
<li>西瓜</li>
</ol>

<script type="text/javascript">
$("li:first-child").css("background-color", "green");

 $("li:last-child").css("background-color", "blue");

:first-child子元素過(guò)濾選擇器功能相反,:last-child子元素過(guò)濾選擇器的功能是獲取每個(gè)父元素中返回的最后一個(gè)子元素,它也是一個(gè)集合,常用多個(gè)集合數(shù)據(jù)的選擇處理。

---表單選擇器---

--:input表單選擇器

如何獲取表單全部元素?:input表單選擇器可以實(shí)現(xiàn),它的功能是返回全部的表單元素,不僅包括所有<input>標(biāo)記的表單元素,而且還包括<textarea>、<select> 和 <button>標(biāo)記的表單元素,因此,它選擇的表單元素是最廣的。

<h3>修改全部表單元素的背景色</h3>
<form id="frmTest" action="#">
<input type="button" value="Input Button" /><br />
<select>
<option>Option</option>
</select><br />
<textarea rows="3" cols="8"></textarea><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest:input").addClass("bg_blue");
</script>

--:text表單文本選擇器

:text表單文本選擇器可以獲取表單中全部單行的文本輸入框元素,單行的文本輸入框就像一個(gè)不換行的字條工具,使用非常廣泛。

 

<h3>修改多個(gè)單行輸入框元素的背景色</h3>
<form id="frmTest" action="#">
<input type="text" id="Text1" value="我是小紙條"/><br />
<textarea rows="3" cols="8"></textarea><br />
<input type="text" id="Text2" value="我也是小紙條"/><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest :text").addClass("bg_blue");
</script>

--:passWord表單密碼選擇器

如果想要獲取密碼輸入文本框,可以使用:password選擇器,它的功能是獲取表單中全部的密碼輸入文本框元素。

 

<h3>修改多個(gè)密碼輸入框元素的背景色</h3>
<form id="frmTest" action="#">
<input type="text" id="Text1" value="單行文本輸入框"/><br />
<input type="password" id="Text2" value="密碼文本輸入框"/><br />
<textarea rows="3" cols="8">區(qū)域文本輸入框</textarea><br />
<input type="password" id="Text3" value="密碼文本輸入框"/><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest :password").addClass("bg_red");
</script>
</body>

--:radio單選按鈕選擇器

表單中的單選按鈕常用于多項(xiàng)數(shù)據(jù)中僅選擇其一,而使用:radio選擇器可輕松獲取表單中的全部單選按鈕元素。

 

<h3>將表單中單選按鈕設(shè)為不可用</h3>
<form id="frmTest" action="#">
<input type="button" value="Input Button" /><br />
<input id="Radio1" type="radio" />
<label for="Radio1">
男</label>
<input id="Radio2" type="radio" />
<label for="Radio2">
女</label><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest :radio").attr("disabled","true");
</script>

--:checkbox復(fù)選框選擇器

表單中的復(fù)選框常用于多項(xiàng)數(shù)據(jù)的選擇,使用:checkbox選擇器可以快速定位并獲取表單中的復(fù)選框元素。

<h3>將表單的全部復(fù)選框設(shè)為不可用</h3>
<form id="frmTest" action="#">
<input type="button" value="Input Button" /><br />
<input id="Checkbox1" type="checkbox" />
<label for="Checkbox1">
西紅柿</label><br />
<input id="Checkbox2" type="checkbox" />
<label for="Checkbox2">
茄子</label><br />
<input id="Checkbox3" type="checkbox" />
<label for="Checkbox3">
黃瓜</label><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest :checkbox").attr("disabled","true");
</script>

--:submit提交按鈕選擇器

通常情況下,一個(gè)表單中只允許有一個(gè)“type”屬性值為“submit”的提交按鈕,使用:submit選擇器可獲取表單中的這個(gè)提交按鈕元素。

 

<h3>修改表單中提交按鈕的背景色</h3>
<form id="frmTest" action="#">
<input type="button" value="Input Button" /><br />
<input type="submit" value="點(diǎn)我就提交了" /><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest input:submit").addClass("bg_red");
</script>

--:image圖像域選擇器

當(dāng)一個(gè)<input>元素的“type”屬性值設(shè)為“image”時(shí),該元素就是一個(gè)圖像域,使用:image選擇器可以快速獲取該類全部元素。

 

<h3>修改表單中圖像元素的背景色</h3>
<form id="frmTest" action="#">
<input type="image" src="http://img.mukewang.com/52b284ea00016b2902590070.jpg" /><br />
<br />
<img alt="" src="http://img.mukewang.com/52b284ea00016b2902590070.jpg" /><br />
</form>

<script type="text/javascript">
$("#frmTest :image").addClass("bg_red");
</script>

--:button表單按鈕選擇器

表單中包含許多類型的按鈕,而使用:button選擇器能獲取且只能獲取“type”屬性值為“button”的<input>和<button>這兩類普通按鈕元素。

 

<h3>修改表單中按鈕元素的背景色</h3>
<form id="frmTest" action="#">
<input id="Button1" type="button" value="我是普通按鈕" /><br />
<input id="Submit1" type="submit" value="點(diǎn)我就提交" /><br />
<button> 我也是普通按鈕 </button><br />
</form>

<script type="text/javascript">
$("#frmTest :button").addClass("bg_blue");
</script>

--:checked選中狀態(tài)選擇器

有一些元素存在選中狀態(tài),如復(fù)選框、單選按鈕元素,選中時(shí)“checked”屬性值為“checked”,調(diào)用:checked可以獲取處于選中狀態(tài)的全部元素。

<h3>將處于選中狀態(tài)的元素設(shè)為不可用</h3>
<form id="frmTest" action="#">
<input id="Radio1" type="radio" checked="checked" />
<label id="Label1" for="Radio1">
蘋(píng)果</label><br />
<input id="Radio2" type="radio" />
<label id="Label2" for="Radio2">
桔子</label><br />
<input id="Checkbox1" type="checkbox" checked="checked" />
<label id="Label3" for="Checkbox1">
荔枝</label><br />
<input id="Checkbox2" type="checkbox" />
<label id="Label4" for="Checkbox2">
葡萄</label><br />
<input id="Checkbox3" type="checkbox" checked="checked" />
<label id="Label5" for="Checkbox3">
香蕉</label><br />
</form>

<script type="text/javascript">
$("#frmTest :checked").attr("disabled", true);
</script>

--:selected選中狀態(tài)選擇器

:checked選擇器相比,:selected選擇器只能獲取<select>下拉列表框中全部處于選中狀態(tài)的<option>選項(xiàng)元素。

<h3>獲取處于選中狀態(tài)元素的內(nèi)容</h3>
<form id="frmTest" action="#">
<select id="Select1" multiple="multiple">
<option value="0">蘋(píng)果</option>
<option value="1" selected="selected">桔子</option>
<option value="2">荔枝</option>
<option value="3" selected="selected">葡萄</option>
<option value="4">香蕉</option>
</select><br /><br />
<div id="tip"></div>
</form>

<script type="text/javascript">
var $txtOpt = $("#frmTest :selected").text();
$("#tip").html("選中內(nèi)容為:" + $txtOpt);
</script>

----------------------------------------------------------------

2、正則表達(dá)式

 這里要做的引擎模板的作用是,替換變量輸出。

需要的是模板文件.class,編譯源文件.php

--template.class.php

<?php
/*
* 描述:仿smarty模板引擎類文件
*
*/

class template{
PRivate $templateDir; //用來(lái)存儲(chǔ)源文件所在目錄
private $compileDir; //用來(lái)存放編譯后的文件目錄
private $leftTag='{#'; //要替換的對(duì)象的標(biāo)記,smarty默認(rèn)是{
private $rightTag='#}';
private $currentTemp=''; //用來(lái)存儲(chǔ)當(dāng)前正在編譯的模板文件名
private $outputHtml; //用來(lái)存放currentTemp的HTML代碼
private $varpool=array(); //變量池;模板編譯時(shí)存放變量

public function __construct($templateDir,$compileDir,$leftTag=null,$rightTag=null){
$this->templateDir=$templateDir;
$this->compileDir=$compileDir;
if (!empty($leftTag)) $this->leftTag=$leftTag; //傳遞左右標(biāo)記的時(shí)候,需要做一下非空的判斷
if (!empty($rightTag)) $this->rightTag=$rightTag;
}

//assign函數(shù)——把模板中需要用到的變量,放到地址池中,并給定標(biāo)記
public function assign($tag,$var){
$this->varpool[$tag]=$var;
}

//與上面的assign對(duì)應(yīng),從地址池中取出變量
public function getVar($tag){
return $this->varpool[$tag];
}

//getSourceTemplate:獲取編譯的源文件_需要知道文件名,和完整的路徑(所以要有拓展名
public function getSourceTemplate($templateName,$ext='.html'){
$this->currentTemp=$templateName;
$sourceFilename=$this->templateDir.$this->currentTemp.$ext;
$this->outputHtml=file_get_contents($sourceFilename);
}

//compileTemplate:編譯方法
public function compileTemplate($templateName=null,$ext='.html'){
$templateName=empty($templateName)? $this->currentTemp:$templateName;
//核心代碼,正則編譯
///{#/$(/w+)#/}
$pattern='//{#/$(/w+)#/}/';
//更加清晰的寫(xiě)法$pattern='/'.preg_quote($this->leftTag).' */$([a-zA-Z_]/w*) *'.preg_quote($this->rightTag).'/';
//核心代碼要做的就是找到標(biāo)記內(nèi)的東西,然后替換為php可以識(shí)別的內(nèi)容
$this->outputHtml=preg_replace($pattern, '<?php echo $this->getVar(/'$1/')?>', $this->outputHtml);
//注意這里的preg_replace的用法,$1表示匹配的子模式

//下面生成目標(biāo)文件,同樣也需要完整的目標(biāo)路徑
$compiledFilename=$this->compileDir.md5($templateName).$ext;
file_put_contents($compiledFilename,$this->outputHtml);
}

public function display($templateName = null, $ext = '.html') {
$templateName = empty($templateName) ? $this->currentTemp : $templateName;
include_once $this->compileDir.md5($templateName).$ext;
}

}

--index.php

<?php
/*
* 山寨模板引擎測(cè)試文件
*/

//包含文件
require_once 'template.class.php';
//獲取路徑,basedir根目錄
$baseDir=str_replace('//', '/',dirname(__FILE__));
$temp=new template($baseDir.'/source/', $baseDir.'/compliled/');

//變量池
$temp->assign('pagetitle', '山寨版smarty');
$temp->assign('test','imooc女神');

//
$temp->getSourceTemplate('index');
$temp->compileTemplate();
$temp->display();

 --幾個(gè)要注意的是

按照屬性+方法,流水線一樣編譯就好

然后,一些服務(wù)要開(kāi),否則像我一樣,還要調(diào)試。。。

祝大家好運(yùn)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产成人精品一区在线播放 | 国产手机av在线 | 国产免费高清在线 | 国产精品99久久久久久大便 | 成人午夜小视频 | 久久精品中文字幕一区 | av电影手机在线看 | 国产精品91久久久 | 精品中文字幕在线观看 | 一区二区三区欧美在线观看 | 久久精品视频2 | 综合国产在线 | 少妇色诱麻豆色哟哟 | 成人毛片免费 | 久草最新网址 | 亚洲国产一区二区三区 | 久久久www成人免费毛片 | 国产精品久久久久影院老司 | 欧洲成人一区二区 | 黄色18网站| 91久久久久久| 日韩三区视频 | 久久人人爽人人爽人人片av高清 | 亚洲第一成人在线视频 | 色视频在线观看 | 欧美爱爱一区二区 | 亚洲一区二区在线视频 | 欧美 日韩 三区 | 亚洲精品久久久久www | 欧美性生交xxxxx免费观看 | 国产精品久久久久久婷婷天堂 | 18一20岁一级毛片 | 精国品产一区二区三区有限公司 | 加勒比色综合 | 日韩av在线播放一区 | 天天干导航 | 免费在线观看一级片 | 一区二区精品视频 | 羞羞的 | 国产日韩在线观看一区 | 久久久久久久久久久国产精品 |