web-dev-qa-db-ja.com

要素のタグ名にドットが含まれていると、Jqueryセレクターが機能しない

初めてjqueryを使い始めたばかりなので、自分のやっていることが正しいかどうかわかりません。私がやろうとしているのは非常に基本的なことです。MVCビューでのロード時にテキストボックスにcss透かしを追加するスクリプトがあります。

要素を選択するには、次のようにします。

jQuery(document).ready(function(){$('#Department.DeptName').addWatermark('input-watermarked', 'test');});

次に、cssウォーターマーククラスを追加するためのスクリプトでは、「this.val()。length」ステートメントで失敗します。

jQuery.fn.toggleWatermark = function(watermarkedClass, watermarkText) {
if (this.hasClass(watermarkedClass)) {
    this.removeWatermark(watermarkedClass);
}
else if (this.val().length == 0) {
    this.addClass(watermarkedClass);
    this.val(watermarkText);
}

}

要素IDが「DepartmentDeptName」の場合、スクリプトは正常に機能します。要素IDにドットが含まれていると、セレクターが機能しないかのようになります。この問題を回避する理由または方法を誰かが知っていますか?

33
Kevin Quinn

ドットを2つのバックスラッシュでエスケープする必要があると思います:$("#Department\\.DeptName")here を参照してください。

65
Joril

クラスDeptNameを使用して#Departmentにアクセスしようとしています。 (Jorilが言ったように)2つのバックスラッシュで脱出する必要があります。

詳細については、 JQuery Selectors を参照してください。

1
Pedro Gil

JQueryの記述を制御できる場合は、$("input[name='department.deptname']")などの代替構文が機能します。剣道でSpringMVCを使用しているため、jQueryコードにアクセスできません。 Spring MVC <form>タグは、該当する場合は常に.を自動的に配置します。例えば。ユーザーが住所を持っている場合..したがって、フィールド都市はuser.address.city(またはaddress.city)になります。そして、Spring MVCを複数の形式に分割すると、バックエンドロジックが台無しになります。また、単一のフォームであるはずだったものを分散させます。もう1つの方法は、バックエンドのUserオブジェクトをフラット化することです...これも、あまりクリーンではありません。確かではありませんが、Dojoはそのようなシナリオで働いていました。

0
Ray