2016-12-05 2 views
3

リスト項目がリンク付きでSTARTS(<li><a href="...)であるかどうかを確認するには、<li>Some text here: <a href="...のような項目内にリンクを埋め込む必要があります。私はCSSで簡単にやり方を見ることができないので、jQueryをどのように達成するのかと思っています。CSSまたはJQUERYで、リスト項目の内容がリンクで始まるかどうかを確認します

+0

、*なぜ?* – Roberrrt

+0

全リンクのリストアイテムに矢印の箇条書きが表示されるように箇条書きのスタイルを設定したいが、矢印の箇条書きが誤解を招くように見えるテキストの深い部分にリンクが埋め込まれていないようにしたい。ただ個人的な好み。 – AndyiBM

+0

これはCSSで実際に可能ですが、HTML構造を共有できますか? – Roberrrt

答えて

1

.filter()を使用すると、機能テストを通過する要素を取得できます。テスト機能では、テキストノードを含む要素の.contents()をフェッチすることができます。ここでfirst()子ノードはNode.nodeTypeと比較できます。ここで

var liStartingWithAnchorElement = $('li').filter(function() { 
 
    var first = $(this).contents().first(); 
 
    return first.get(0).nodeType == Node.ELEMENT_NODE && first.is('a'); 
 
}); 
 
liStartingWithAnchorElement.addClass('highlight');
.highlight { 
 
    background-color: yellow; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li>Some text here: <a href="#">Yahooo</a> 
 
    </li> 
 
    <li><a href="#">Yahooo</a> 
 
    </li> 
 
    <li>Lorem Ipsum <a href="#">Lorem Ipsum</a> 
 
    </li> 
 
</ul>

.get(index)は、基礎となるDOM要素を取得するために使用されます。

+0

とこれはうまく動作します - ありがとうSatpal – AndyiBM

1

それは<span>タグでラップするすべてのものを含み、これは(あなたの現在の状況に最適なソリューションではありませんが、私は今後の参考のためにこれを残している。しかも、それはCSSを使用して選択する方法があります。

li { 
 
    list-style: none; 
 
} 
 

 
li > a:first-child:before { 
 
    content: "\25B6"; 
 
    padding-right: 10px; 
 
    color: #000; 
 
    display: inline-block; 
 
    pointer: none; 
 
} 
 

 
li > span:first-child:before { 
 
    content: "\25CF"; 
 
    padding-right: 10px; 
 
}
<ul> 
 
    <li><span>Some text here:</span><a href="#">Yahooo</a></li> 
 
    <li><a href="#"><span>Yahooo</span></a></li> 
 
    <li><span>Lorem Ipsum</span><a href="#">Lorem Ipsum</a></li> 
 
</ul>

これは、アイテムの内容に基づいて、カスタマイズされたリストのアイコンがデフォルトのリストの要素を置き換えるの純粋なCSSの方法です。ただ、好奇心のうち

+1

ありがとうございます - まだ、おそらくまだ理想的ではありません - 私はおそらく、スパンを管理するためにjQueryを必要とします(クライアントを手作業で追加するには多すぎます)。 – AndyiBM

関連する問題