22

評価値が「未評価」の場合に非表示にしたいオブジェクト (この場合は js-kit の評価オブジェクト) があります。これを行うための適切な jQuery セレクターを取得するのに問題があります。

以下のコードは機能するように見えますが、機能しません。

$(".js-rating-labelText:contains('unrated')").css("visibility", "hidden");  

.js-rating-labelTextテキストに設定されるクラスです。

4

9 に答える 9

22

独自のセレクター メソッドを作成できます

たとえば、次のことができるようにしたい場合:

$('.js-rating-label:hasText(unrated)');

hasTextメソッドは次のように定義できます。

$.expr[':']['hasText'] = function(node, index, props){
  return node.innerText.contains(props[3]);
}

props[3]':hasText' の後の括弧内のテキストを含みます。

于 2013-06-12T17:07:11.440 に答える
19

テキストの内容に基づいて要素を選択する別の方法はありますか?

これを試して:

$('.js-rating-labelText').filter(function(){
  return (/unrated/i).test($(this).text())
}).css('visibility', 'hidden');
于 2009-05-01T23:22:14.983 に答える
8

おそらく問題は:contains('Unrated')関数の一部にあります。テキストをランダムな値に変更すると、同じ結果が得られます。

$("#ratingDiv:contains('somerandomtext')").hide();
于 2009-05-01T23:12:39.937 に答える
1

@tgmdbmの優れた回答のわずかな変形。hasText()唯一の違いは、引数に正確に一致する単一の子テキスト ノードを持つノードのみを選択することです。一方.innerText、すべての子孫テキスト ノードの連結を返します。

  if( ! $.expr[':']['hasText'] ) {
     $.expr[':']['hasText'] = function( node, index, props ) {
       var retVal = false;
       // Verify single text child node with matching text
       if( node.nodeType == 1 && node.childNodes.length == 1 ) {
         var childNode = node.childNodes[0];
         retVal = childNode.nodeType == 3 && childNode.nodeValue === props[3];
       }
       return retVal;
     };
  }
于 2015-03-05T21:57:03.240 に答える
0

js-kit関数がテキストを入力した後ではなく、テキストが入力されたにコードが実行されていることを確認してください。

于 2009-05-01T22:29:35.093 に答える
0

hide() / show() メソッドの使用も検討してください。

$(".js-rating-labelText:contains('unrated')").hide()
于 2009-05-01T22:50:06.183 に答える
0

トピックを説明する最良の方法は、例と参照リンクを提供することです:-

例:- 次の jQuery セレクター構文は、既に選択されている (一致した) HTML 要素のセットから最初または n 番目の要素を選択します。

$("selector:contains(searchText)")

HTML:-

<table>
<tr><td>John Smith</td><td>Marketing</td></tr>
<tr><td>Jane Smith</td><td>Sales</td></tr>
<tr><td>Mike Jordon</td><td>Technology</td></tr>
<tr><td>Mary Jones</td><td>Customer Support</td></tr>
</table>
Search: <input id="txtSearch" type="text">
<input id="btnTestIt" type="button" value="Test It">
<input id="btnReset" type="reset" value="Reset">

Jquery:-

$(document).ready( function(){
    $("#btnTestIt").click( function(){
        var searchText = $("#txtSearch").val();
        $("td:contains('" + searchText + "')").css("background-color", "yellow");
    });
    $("#btnReset").click( function(){
        $("td").css("background-color", "white");
    });
});
于 2014-11-09T14:25:41.460 に答える
0

あなたが提供した HTML に基づいて、あなたがテストしている「評価されていない」テキストがどこから来ているのかわかりません。

ただし、それがその div 内のテキスト全体である場合は、直接テストしてください。

if ($('.js-rating-labelText').text() == 'unrated'){
  $(this).hide();
}
于 2009-05-01T23:33:49.217 に答える
-1

javascript関数からのhtmlの一部を次に示します。

<div class="js-kit-rating" id="ratingDiv" style="width: 86px; visibility: hidden;" jk$initialized="true" path="/business/blogger-com" permalink="/businessblogger-com" freeze="yes" starcolor="Golden">
  <table class="js-ratings-tableWrapper" border="0" cellSpacing="0" cellPadding="0">
    <tbody>
      <tr>
        <td>
          <div class="js-ratingWrapper" style="width: 80px;">
          <div style="float: left; cssfloat: left;">
              <div style="width: 80px; height: 15px;">
<div class=" js-kit-objIcon" style="width: 16px; float: left; height: 15px; cssfloat: left;" imageURL="//js-kit.com/images/stars/golden.png">
  <img style="display: none;" src="//js-kit.com/images/stars/golden.png" complete="complete"/>
<div class=" js-kit-objIcon" style="width: 16px; float: left; height: 15px; cssfloat: left;" imageURL="//js-kit.com/images/stars/golden.png"/>
<div class=" js-kit-objIcon" style="width: 16px; float: left; height: 15px; cssfloat: left;" imageURL="//js-kit.com/images/stars/golden.png"/>
<div class=" js-kit-objIcon" style="width: 16px; float: left; height: 15px; cssfloat: left;" imageURL="//js-kit.com/images/stars/gray.png">
  <img style="display: none;" src="//js-kit.com/images/stars/gray.png" complete="complete"/>
<div class=" js-kit-objIcon" style="width: 16px; float: left; height: 15px; cssfloat: left;" imageURL="//js-kit.com/images/stars/gray.png"/>
<div class=" js-rating-labelText">
于 2009-05-01T22:36:50.867 に答える