6

Telerik ASP.NET ウィジェットによって生成されたタブにクリック イベントを追加しようとしています。実験のために、生成された HTML の一部を静的ページに持ち上げました。

<HTML>
<HEAD>
<TITLE>sandpit</TITLE>
<SCRIPT TYPE="text/javascript" SRC="jquery-1.9.1.js"></SCRIPT>
<SCRIPT>
$(document).ready(function(){
  var foo = $("span.rtsTxt");
  var bar = foo.filter("[innerText='More']")
  bar.on('click',function(){alert('click');});
  alert('ready');
});
</SCRIPT>
</HEAD>
<BODY>
  <ul>
    <li class="rtsLI">
      <a class="rtsLink rtsAfter">
        <span class="rtsOut">
          <span class="rtsIn">
            <span class="rtsTxt">Preferences</span>
          </span>
        </span>
      </a>
    </li>
    <li class="rtsLI">
      <a class="rtsLink rtsAfter">
        <span class="rtsOut">
          <span class="rtsIn">
            <span class="rtsTxt">More</span>
          </span>
        </span>
      </a>
    </li>
  </ul>
</BODY>
</HTML>

デバッグを行うと、予想どおり foo に 2 つの項目が含まれていることがわかります。ただし、innerText の値が「More」である 2 番目のものを選択した場合の構文がわかりません。

問題は、innerText == 'More' を、示されているようにフィルター式で、またはセレクター文字列で直接表現するにはどうすればよいかということです。

4

5 に答える 5

10

オブジェクトを返す要素を選択するもう 1 つの方法は、次の ような フィルターを使用することです。

$(".rtsTxt").filter(function() {
    return $(this).text() == "More";
});   

フィドル

于 2013-03-21T03:24:22.690 に答える
8

:containsセレクターを試してください:

var bar = foo.filter(":contains('More')")

これは、それが機能していることを示すjsfiddleデモです。

警告:これは質問のhtmlで機能しますが、:containsセレクターは、テキストが指定されたテキストと等しい要素だけでなく、指定されたテキストを含むすべての要素に一致します。(@RASが以下のコメントで指摘したように。)

于 2013-03-21T03:10:42.190 に答える
1

これは問題外ですか?

if ($("span.rtsTxt").html() == "More") {
   // do stuff
}
于 2013-03-21T03:11:55.423 に答える
0

contains セレクターを使用します。

var bar = $("span.rtsTxt:contains('More')")
bar.on('click',function(){alert('click');});  
bar.html("yup")

作業例: http://jsfiddle.net/basarat/w38VE/4/

于 2013-03-21T03:18:09.127 に答える