JQery選擇器

題目1: 說說庫和框架的區別?
庫:很多工具的集合,實現一個效果可以使用工具簡化流程
框架:結構框架,依據框架填充內容

庫是將代碼集合成的一個產品,供程序員調用。面向對象的代碼組織形式而成的庫也叫類庫。面向過程的代碼組織形式而成的庫也叫函數庫。
在函數庫中的可直接使用的函數叫庫函數。開發者在使用庫的時候,只需要使用庫的一部分類或函數,然后繼續實現自己的功能。

框架則是為解決一個(一類)問題而開發的產品,框架用戶一般只需要使用框架提供的類或函數,即可實現全部功能。可以說,框架是庫的升級版。
開發者在使用框架的時候,必須使用這個框架的全部代碼。

題目2: jquery 能做什么?

  • 選擇網頁元素
  • 改變結果集
  • 元素的操作:取值和賦值
  • 元素的操作:移動
  • 元素的操作:復制、刪除和創建
  • 工具方法
  • 事件操作
  • 特殊效果
  • AJAX

題目3: jquery 對象和 DOM 原生對象有什么區別?如何轉化?
DOM 原生對象,原生JS對象有自己的屬性和方法;
jQuery對象是對原生JS對象的封裝,jQuery對象有自己的屬性和方法與原生JS對象不同;
用法區別
將DOM對象轉換為jQuery對象加$符,如$(btn)
將jQuery對象轉換為DOM對象加下標,如$('.btn')[0]

題目4:jquery中如何綁定事件?bind、unbind、delegate、live、on、off都有什么作用?推薦使用哪種?使用on綁定事件使用事件代理的寫法?
.on( events [,selector ] [,data ], handler(eventObject) )

  • bind():bind()向匹配元素添加一個或多個事件處理器。
    $(selector).bind(event,data,function)

  • unbind():通過 .unbind(eventType,false) 解除bind()函數綁定。

  • delegate():delegate() 為指定的元素(被選元素的子元素)添加一個或多個事件處理程序,并規定當這些事件發生時運行的函數。使用 delegate() 方法的事件處理程序適用于當前或未來的元素(比如由腳本創建的新元素)。
    $(selector).delegate(childSelector,event,data,function)

  • live():live() 向當前或未來的匹配元素添加一個或多個事件處理器。
    $(selector).live(event,data,function)

  • on():on() 為指定的元素,添加一個或多個事件處理程序,并規定當這些事件發生時運行的函數。使用 on() 方法的事件處理程序適用于當前或未來的元素(比如由腳本創建的新元素)。
    $(selector).on(event,childselector,data,function)

  • off():主要用于解除由on()函數綁定的事件處理函數。off所解除元素的綁定事件,其中選擇器必須和on綁定事件時所用的選擇器一致。

1.bind()函數只能針對已經存在的元素進行事件的設置;但是live(),on(),delegate()均支持未來新添加元素的事件設置;
2.bind()函數在jquery1.7版本以前比較受推崇,1.7版本出來之后,官方已經不推薦用bind(),替代函數為on(),這也是1.7版本新添加的函數,同樣,可以用來代替live()函數,live()函數在1.9版本已經刪除;
3.live()函數和delegate()函數兩者類似,但是live()函數在執行速度,靈活性和CSS選擇器支持方面較delegate()差些;
推薦用delegate(),高版本jquery可以使用on()來代替。

// 事件委托或者事件代理,想讓div 下面所有的span綁定事件,可以把事件綁定到div上

    console.log(this);
    console.log(e);
});```

題目5:jquery 如何展示/隱藏元素?
- 展示元素:$( this ).css( "display", "block" );

- 隱藏元素:$( this ).css( "display", "none" );

題目6: jquery 動畫如何使用?
基礎
- .hide([duration ] [,easing ] [,complete ])
用于隱藏元素,沒有參數的時候等同于直接設置display屬性。

- .show( [duration ] [, easing ] [, complete ] )
用于顯示元素,用法和hide類似。

- .toggle( [duration ] [, easing ] [, complete ] )
用來切換元素的隱藏、顯示,類似于toggleClass,用法和show、hide類似。

漸變
- .fadeIn( [duration ] [, easing ] [, complete ] )
通過淡入的方式顯示匹配元素,參數含義和上面相同。

- .fadeOut( [duration ] [, easing ] [, complete ] )
通過淡出的方式隱藏匹配元素。

- .fadeTo( duration, opacity [, easing ] [, complete ] )
調整匹配元素的透明度,方法通過匹配元素的不透明度做動畫效果。

- .fadeToggle( [duration ] [, easing ] [, complete ] )
通過匹配的元素的不透明度動畫,來顯示或隱藏它們,方法執行匹配元素的不透明度動畫。當被可見元素調用時,元素不透明度一旦達到0,display樣式屬性設置為none ,所以元素不再影響頁面的布局。

滑動
- .slideDown( [duration ] [, easing ] [, complete ] )
用滑動動畫顯示一個匹配元素,方法將給匹配元素的高度的動畫,這會導致頁面的下面部分滑下去,彌補了顯示的方式。

- .slideUp( [duration ] [, easing ] [, complete ] )
用滑動動畫隱藏一個匹配元素,方法將給匹配元素的高度的動畫,這會導致頁面的下面部分滑上去,當一個隱藏動畫后,高度值達到0的時候,display 樣式屬性被設置為none,以確保該元素不再影響頁面布局。 display 樣式屬性將被設置為none,以確保該元素不再影響頁面布局。

- .slideToggle( [duration ] [, easing ] [, complete ] )
用滑動動畫顯示或隱藏一個匹配元素,方法將給匹配元素的高度的動畫,這會導致頁面中,在這個元素下面的內容往下或往上滑。display屬性值保存在jQuery的數據緩存中,所以display可以方便以后可以恢復到其初始值。

自定義
- .animate( properties [, duration ] [, easing ] [, complete ] )

- .animate( properties, options )

題目7:如何設置和獲取元素內部 HTML 內容?如何設置和獲取元素內部文本?
設置元素內部html:$('div').html('123')
獲取元素內部html:$('div').html()
設置元素內部文本:$('div').text('123')
獲取元素內部文本:$('div').text()

題目8:如何設置和獲取表單用戶輸入或者選擇的內容?如何設置和獲取元素屬性?

$('input').val()

為元素屬性賦值:.attr(attributeName,value) / .attr(attributesJson) / .attr( attributeName, function(index, attr) )
獲取元素特定屬性的值:.attr(attributeName)


題目9: 使用 jquery實現如下效果

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<style>
.nav-aside{
background: #c7171e;
width: 200px;
}

.category .cate-title{
    display: block;
    color: #fff;
    border-bottom: 1px dotted #de272e;
    margin: 0 10px;
    padding: 10px;
    font-size: 14px;
}

.category{
    position: relative;
}

.category .panel{
    color: #fff;
    position: absolute;
    right: 10px;
    top: 10px;
    font-size: 14px;
}

.category .child-products{
    position: absolute;
    top: 0;
    left: 200px;
    background: #fff;
    border: 1px solid #ccc;
    width: 210px;
    font-size: 12px;
    display: none;
}

.child-products li{
    float: left;
    width: 55px;
    padding: 10px 20px;
}

ul, li{
    list-style: none;
    margin: 0;
    padding: 0;
}

a{
    text-decoration: none;
}

</style>
</head>
<body>
<div class="area-nav">
<ul class="nav-aside">
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
<li>瑪瑙</li>
<li>珍珠</li>
<li>鉆石</li>
<li>琥珀</li>
<li>和田</li>
<li>琥珀</li>
</ul>
</li>
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
<li>瑪瑙</li>
<li>珍珠</li>
</ul>
</li>
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
</ul>
</li>
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
<li>瑪瑙</li>
<li>珍珠</li>
</ul>
</li>
<li class="category">
<a href="#" class="cate-title">珠寶玉器</a>
<span class="panel">></span>
<ul class="child-products">
<li>翡翠</li>
<li>玉石</li>
<li>寶石</li>
<li>水晶</li>
</ul>
</li>
</ul>
</div>
<script src="jquery-3.2.1.min.js"></script>
<script>
$('.nav-aside .category').on('mouseenter', function(){
$(this).find('.child-products').css('display', 'block');
})

  $('.nav-aside .category').on('mouseleave', function(){
      $(this).find('.child-products').css('display', 'none');
  })  

</script>
</body>
</html>


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容