我有一个包含不同条目的页面。有时,此条目的第一项是<ul>
,有时它是<p>
。我怎样才能测试它是哪一个?
以下是第一项<p>
:
<div class="itsanyclass">
<h3>XYC</h3>
<div id="job123">
<p>blablabla</p>
<ul>
<li>blablabla</li>
</ul>
</div>
以下是第一项<ul>
:
<div class="itsanyclass">
<h3>XYC</h3>
<div id="job123">
<ul>
<li>blablabla</li>
</ul>
<p>blablablabla</p>
</div>
我试过了:
if($(":first-child", this) == "ul")
类.this
表示调用该函数的对象。
答案 0 :(得分:0)
您的代码存在一些问题:
if( $(":first-child", this) == "ul" )
首先,您希望JavaScript中的this
与<div>
一起引用class="this"
,但这不是this
在JavaScript中的含义。在JavaScript this
中是refers to the current scope的变量。如果您想使用class="this"
获取元素,则需要使用.this
选择器:
console.log( $(".this") );
// => [<div class="this"></div>]
现在,要获得div
.this
内的第一个孩子,您需要这样做:
console.log( $(".this > div > :first-child") );
// => [<p>blablabla</p>]
您可能认为只有".this :first-child"
可以逃脱,但是如果没有直接的子选择器(>
),:first-child
将返回&#的每个元素39;是{em>任何 .this
个孩子的第一个孩子。
现在我们已选择了正确的元素(将是<p>
或<ul>
),我们使用jQuery的is()
函数来测试是否或它不匹配给定的选择器,即.is('ul')
仅在所选元素为true
时才会返回<ul>
。
最后,我们拥有的是:
if( $('.this > div > :first-child').is('ul') ) {
console.log('First child of .this is a UL');
}
答案 1 :(得分:0)
您可以使用包含。我为我正在处理的项目做了这个,其中内容也是第一个或第二个子元素。
$(document).ready(function(){
$('element').on('click', 'element:contains("blablabla")', function(){
alert('you clicked me');
});
});
或者,你可以在元素中添加一个类或id并调用
答案 2 :(得分:0)
我尊重别人的答案但是,我想确切的问题是......&#34;哪个是第一个类型元素?&#34;
虽然其他答案可能是正确的,但仍然要回答这个问题,你可以试试这个:
var first_child = $('.this > div > :first-child');
alert($(first_child).prop('tagName'));
当然,为了将功能代码与您检测到的类型相关联,您可以使用.is()
,如答案中所示。