jQuery-selailu - is()-menetelmä
Esimerkki
Palauttaa false, koska input-elementin emo on p-elementti:
var isFormParent = $("input[type='checkbox']").parent();.is("form"); $("div").text("isFormParent = " + isFormParent);
Määritelmä ja käyttö
is() tarkistaa valitsimen, elementin tai jQuery-objektin vastaavuuden elementtien joukkoon, ja jos vähintään yksi näistä elementeistä vastaa annettua parametria, palauttaa true.
Syntaksi
.is(valitsin)
Parametrit | Kuvaus |
---|---|
valitsin | Merkkijonoarvo, joka sisältää vastaanotetun elementin valitsimen ilmaiselman. |
Yksityiskohtainen selitys
Eri kuin muut suodatusmenetelmät, .is() ei luo uutta jQuery-objektia. Sen sijaan se mahdollistaa meidän tarkistaa jQuery-objektia ilman, että muutetaan sen sisältöä. Tämä on yleensä hyödyllistä callback-ohjelmointiympäristössä, kuten tapahtumankäsittelijöissä.
Oletetaan, että meillä on luettelo, jossa kaksi kohtaa sisältää alisijat:
<ul> <li>list <strong>item 1</strong></li> <li><span>list item 2</span></li> <li>list item 3</li> </ul>
Voit lisätä click-käsittelijän <ul>-elementtiin ja rajoittaa koodin niin, että se käynnistyy vain silloin, kun luettelo kohta itse, ei sen alisijat, on napsautettu:
$("ul").click(function(event) { var $target = $(event.target); if ( $target.is("li") ) { $target.css("background-color", "red"); } );
Nyt, kun käyttäjä napsauttaa ensimmäisen luettelon kohteen sanaa "list" tai kolmannen luettelon kohteen minkä tahansa sanaa, napsautettu luettelo kohta asetetaan punaiseen taustaväriin. Kuitenkin, kun käyttäjä napsauttaa ensimmäisen luettelon kohteen sanaa item 1 tai toisen luettelon kohteen minkä tahansa sanaa, ei tapahdu minkäänlaista muutosta, koska tässä tilanteessa tapahtuman kohde on <strong> on <span>.
请您注意,对于带有位置性选择器的选择器表达式字符串,比如 :first、:gt() 或者 :even,位置性筛选是针对传递到 .is() 的 jQuery 对象进行的,而非针对包含文档。所以对于上面的 HTML 来说,诸如 $("li:first").is("li:last") 的表达式返回 true,但是 $("li:first-child").is("li:last-child") 返回 false。
使用函数
该方法的第二种用法是,对基于函数而非选择器的相关元素的表达式进行求值。对于每个元素来说,如果该函数返回 true,则 .is() 也返回 true。例如,下面是稍微复杂的 HTML 片段:
<ul> <li><strong>list</strong> item 1 - one strong tag</li> <li><strong>list</strong> item <strong>2</strong> - two <span>strong tags</span></li> <li>list item 3</li> <li>list item 4</li> <li>list item 5</li> </ul>
您可以向每个 <li> 添加 click 处理程序,以计算在被点击的 <li> 内部 <strong> 元素的数目:
$("li").click(function() { var $li = $(this), isWithTwo = $li.is(function() { return $('strong', this).length === 2; });; if ( isWithTwo ) { $li.css("background-color", "green"); } else { $li.css("background-color", "red"); } );