使用 JQuery \ Watermark 更改 css 类

发布于 2024-09-17 18:23:58 字数 784 浏览 10 评论 0 原文

我的应用程序试图在表单的文本框中显示文本水印,但我不想触及该框的实际值。因此,我尝试使用类来使用带有水印文本的背景图像;

    .watermarkon input
   {
        background-image: url('../forms/images/TypeNameWatermark.png');
        background-repeat:no-repeat;
   }

    .watermarkoff input
   {
        background-image: none;
   }

我在表单中设置文本框 CssClass="watermarkon",当单击这样的元素时,我想删除“watermarkon”并替换为“watermarkoff”,甚至只是删除现有的类。我在语法上尝试了很多不同的尝试,尽管我可以很好地捕获单击事件,但页面似乎从未更新元素的 CSS。这是我最近的尝试:

     jQuery(document).ready(
         function() {
             jQuery(".watermarkon input").click(function(event) {
                 jQuery(this).removeClass("watermarkon").addClass("watermarkoff");

             });
         }
     );

谁能告诉我我错过了什么 - 为什么我似乎无法获得 CSS 更改来更新实时网页?

提前致谢!

My application is trying to show a text watermark in a textbox on a form, but I don't want to touch the actual value of the box. So, I'm trying to use a background image with the watermark text, using classes;

    .watermarkon input
   {
        background-image: url('../forms/images/TypeNameWatermark.png');
        background-repeat:no-repeat;
   }

    .watermarkoff input
   {
        background-image: none;
   }

I'm setting the textboxes CssClass="watermarkon" in the form, and when such an element is clicked, I'd like to remove the "watermarkon" and replace with "watermarkoff" or even just remove the existing class. I've tried a ton of different attempts at the Syntax, and though I can capture the click event fine, the page never seems to update the element's CSS. Here is my latest attempt:

     jQuery(document).ready(
         function() {
             jQuery(".watermarkon input").click(function(event) {
                 jQuery(this).removeClass("watermarkon").addClass("watermarkoff");

             });
         }
     );

Can anyone tell me what I'm missing - why I can't seem to get the CSS change to update the live web page?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

李不 2024-09-24 18:23:58

你的选择器是错误的

 jQuery(document).ready(
     function() {
         jQuery("input.watermarkon").click(function(event) {
             jQuery(this).removeClass("watermarkon").addClass("watermarkoff");

         });
     }
 );

You selector is wrong

 jQuery(document).ready(
     function() {
         jQuery("input.watermarkon").click(function(event) {
             jQuery(this).removeClass("watermarkon").addClass("watermarkoff");

         });
     }
 );
樱娆 2024-09-24 18:23:58

由于该类直接位于文本框上,因此您的 CSS 选择器应该在 input 上具有该类,而不是将 元素作为子元素,因此将它们更改为此:

input.watermarkon
//and...
input.watermarkoff

还有更简单的 jQuery 来匹配:

jQuery("input.watermarkon").bind("blur focus", function() {
  jQuery(this).toggleClass("watermarkon watermarkoff");
});

您通常希望更改 focusblur 上的水印样式(需要进行额外的检查,具体取决于您的操作),而不是单击。正在追赶)。这将在聚焦时将类更改为 watermarkoff,并在使用 watermarkon "nofollow noreferrer">.toggleClass() 交换类。

Since the class is on the textbox directly, your CSS selectors should have the class on input, not having an <input> element as a child, so change them to this:

input.watermarkon
//and...
input.watermarkoff

And a bit more simplified jQuery to match:

jQuery("input.watermarkon").bind("blur focus", function() {
  jQuery(this).toggleClass("watermarkon watermarkoff");
});

Rather than a click, you typically want to change the watermark styling on focus and blur (with additional checks, depending on what you're after). This will change the class to watermarkoff when focusing, and restore watermarkon when blurring using .toggleClass() to swap the classes.

独自←快乐 2024-09-24 18:23:58

使用选择器.watermarkon input,您尝试选择另一个具有watermarkon 类的元素内的所有输入元素。

此外,如果删除 watermarkon 类,则无法使用包含 .watermarkon 的选择器再次选择该元素。

所以尝试这样做:

HTML:

<input type="text" class="watermark"/>

CSS:

.watermark {
    background-image: url('../forms/images/TypeNameWatermark.png'); 
    background-repeat:no-repeat;
}

jQuery:

$('input').click(function() {
    $(this).removeClass('watermark');
});

With the selector .watermarkon inputyou try to select all input elements inside another element that has the class watermarkon.

Also, if you remove the class watermarkon then you are not able to select the element again with a selector that includes .watermarkon.

So try to do it like this:

HTML:

<input type="text" class="watermark"/>

CSS:

.watermark {
    background-image: url('../forms/images/TypeNameWatermark.png'); 
    background-repeat:no-repeat;
}

jQuery:

$('input').click(function() {
    $(this).removeClass('watermark');
});
唠甜嗑 2024-09-24 18:23:58

根据您的 CSS 和 jQuery,这就是您想要做的:

 jQuery(document).ready(
     function() {
         jQuery(".watermarkon input").click(function(event) {
             jQuery(this).parents('.watermarkon').removeClass("watermarkon").addClass("watermarkoff");

         });
     }
 );

问题是 input 没有 .watermarkon.watermarkoff 在样式表中,并且没有按您期望的方式显示任何内容。

Based on your CSS and jQuery, this is what you want to be doing:

 jQuery(document).ready(
     function() {
         jQuery(".watermarkon input").click(function(event) {
             jQuery(this).parents('.watermarkon').removeClass("watermarkon").addClass("watermarkoff");

         });
     }
 );

The issue is that the input doesn't have .watermarkon or .watermarkoff in the stylesheet, and nothing displays as you expect it to.

红尘作伴 2024-09-24 18:23:58

感谢大家的帮助,我是 JS 和 JQuery 的新手,还不太了解对象和继承。我查看了所有答案并尝试了很多事情。在我的特定应用程序中,我们必须使用 .输入,因为我正在使用自定义编程的 asp.net 控件,如果缺少“输入”,则 CSS 将无法在文本框上工作。

我最终使用的代码是:

     jQuery(document).ready(
         function() {
             jQuery('.watermarkon').click(function(event) {
             jQuery(this).removeClass('watermarkon').addClass('watermarkoff');
             });
         }
     );

我认为它实际上是有效的,因为修复了我在原始代码中对双引号和单引号的错误使用?

再次感谢所有的回复!

Thanks to everyone for their help, I'm new to JS and JQuery and don't understand objects and inheritances well yet. I looked at all answers and tried a number of things. In my particular app, we have to use . input as I am working with custom programmed asp.net controls and if the "input" is missing, the CSS won't work on text boxes.

The code I ended up using was:

     jQuery(document).ready(
         function() {
             jQuery('.watermarkon').click(function(event) {
             jQuery(this).removeClass('watermarkon').addClass('watermarkoff');
             });
         }
     );

And I think it actually worked because of fixing my mis=use of double vs single quotes in the original code?

Thanks again for all of the replies!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文