2

xslを使用してxslからhtmlを生成しています。私は次のようにcssのクラスの名前にIPアドレスを使用する必要があります:

<td><div title="delete" >
    <xsl:attribute name="class">
         delete_link_<xsl:value-of select="destinationIp"/>
    </xsl:attribute>    
    <img class="row-remover" src="/media/img/remove.png"/>
</div></td>

そして私はこのjquery関数を持っています:

 $('.delete_link_<xsl:value-of select="destinationIp"/>').click( function() {
      // do some thing here
 });

ただし、IPアドレスに「ドット」が含まれているため、上記のコードは機能しません。xmlファイルのdestinationIpタグのドットを削除すると、機能します。だから私はそれが'ドット'に問題があると思います。それを機能させるためのアイデアはありますか?本当にありがとう :)

4

3 に答える 3

2

ドットを削除するだけで、悪い結果を招く可能性があります。

次の2つのIPアドレスを検討してください。

13.8.123.4

138.12.3.4

ドットが削除されると、2つのケースのそれぞれでまったく同じ結果が得られます。

1381234

IPアドレスごとに異なるクラスが必要だと思います。その場合、ドットを削除せずに、正当な文字に置き換えてください

<td><div title="delete" class="delete_link{translate(destinationIp,'.','_')}">
    <img class="row-remover" src="/media/img/remove.png"/>
</div></td>

このコードを使用すると、上記の2つのIPアドレスに対して2つの異なるクラスが生成されます

delete_link13_8_123_4

delete_link138_12_3_4

また、AVT(属性値テンプレート)を使用して、元のコードが2回(6行から3行に)縮小されたことにも注意してください

于 2012-10-14T14:31:21.530 に答える
1

translate()関数を使用して、文字列からドット文字を削除できます。

例えば...

<xsl:value-of select="translate( destinationIp, '.', '')"/>

参照:

  1. http://zvon.org/xxl/XSLTreference/Output/function_translate.html
  2. (XSLT 1.0)http://www.w3.org/TR/xpath/#function-translate または
  3. (XSLT 2.0)http://www.w3.org/TR/xpath-functions/#func-translate
于 2012-10-14T11:50:45.573 に答える
1

ねえ、あなたはこのようにIPアドレスをエスケープします:\\各特殊文字の前に使用すると、トリックが実行されます。

作業デモ http://jsfiddle.net/gubfj/

サンプル

127\\.0\\.0\\.1

https://groups.google.com/forum/?fromgroups#!topic/jquery-en/ugchaJObJFo

各特殊文字の前に2つの円記号を使用します。

jQueryセレクターの円記号は、次の文字をエスケープします。ただし、バックスラッシュはJavaScript文字列のエスケープ文字でもあるため、そのうちの2つが必要です。最初のバックスラッシュは2番目のバックスラッシュをエスケープし、文字列に実際のバックスラッシュを1つ与えます。これにより、jQueryの次の文字がエスケープされます。

これが原因に合うことを願っています:)

コード

$('.delete127\\.0\\.0\\.1').click( function() {
     alert("you click ==> " + $(this).html());
      // do some thing here
 });​
于 2012-10-14T06:53:53.173 に答える