使用jquery为变量分配CSS类

时间:2012-02-05 00:40:30

标签: jquery

目前,我有:

<html>
<div class="yes1"><span><img src="img"></span></div>
</html>
<script>
var x = "='yes1'"
var y = "='yes2'"
$('.yes1').click(function () {
$('.yes1').find(x).replaceWith(y)
});
<script>

我无法找到并替换工作。我相信我没有正确分配变量。任何帮助将不胜感激。 感谢

4 个答案:

答案 0 :(得分:2)

假设您尝试使用div yes2更改div yes1的内容,那么为了使其工作,您需要在yes1和yes2前面的点(使其成为类选择器,如此):

var x = ".yes1";
var y = ".yes2";

或者,如果您尝试更改类,则需要更改脚本:

更正:

$("yes1").removeClass("yes1").addClass("yes2");

(感谢那些指出需要进行更改的stackoverflow用户)

答案 1 :(得分:1)

<div class="yes1">中没有任何“yes1”。所以它现在可以工作了。

find说明是:

  

描述:获取当前匹配元素集中每个元素的后代,由选择器,jQuery对象或元素过滤。

所以内部没有'yes1'。

如果您只想更改课程,请执行以下操作:

$('.yes1').click(function () {
    $(this).removeClass('yes1').addClass('yes2');
});

但是因为这段代码只会执行一次我更喜欢one函数:

$('.yes1').one('click', function () {
    $(this).removeClass('yes1').addClass('yes2');
});

答案 2 :(得分:1)

“find”方法查找并返回由“yes1”找到的对象的子对象或属性,而不是包含值“yes1”的子属性。什么会更好地工作

var x='yes1';
var y='yes2'
$('.yes1').click(function () {
    $(this).removeClass(x).addClass(y);
});

答案 3 :(得分:1)

有点难以分辨你想要实现的目标,但是看起来有点类似于“yes1”的div,你想要将类改为“yes2”。如果是这样,你可以这样做:

$(".yes1").click(function() {
   $(this).removeClass("yes1").addClass("yes2");
});

这将仅更改单击元素的类,而不更改其他具有“yes1”类的元素,因为在单击事件处理程序this中引用了单击的元素。如果要将所有元素从“yes1”更改为“yes2”,可以执行以下操作:

$(".yes1").removeClass("yes1").addClass("yes2");

如果您想对变量xy执行此操作,则需要将它们设置为不带=或引号的类名,因此:

var x = "yes1",
    y = "yes2";

$("." + x).removeClass(x).addClass(y);

您尝试使用的.replaceWith() method不会更改所选元素的属性,它会完全删除它们并将其替换为其他元素。鉴于您显示的html标记没有任何其他元素,我不认为这是您想要做的,但如果它是您使用此语法:

$(".yes1").replaceWith(".yes2");