试图有一个链接+复选框,点击时可点击和文本都发生变化

Posted

技术标签:

【中文标题】试图有一个链接+复选框,点击时可点击和文本都发生变化【英文标题】:Trying to have a link + checkbox, both clickable and text change on click 【发布时间】:2013-08-29 00:45:00 【问题描述】:

目前我只是使用 jQuery 有一个复选框和一个文本,在选中复选框后文本要更改,但我正在尝试使用它以便可以单击框或文本,结果是更改文本和复选框?

谁能进一步帮助我?

【问题讨论】:

请发布您已经尝试过的代码。 到目前为止你尝试了什么? 【参考方案1】:

html

对于HTML部分,有two ways to specify a label for an element:

    将标签的for属性设置为元素的id

    <input type='checkbox' id='chkCart' />
    <label for='chkCart'>Add to Cart</label>
    

    将元素放置在标签内

    <label >
        <input type='checkbox' />
        Add to Cart
    </label>
    

我会用第一个

javascript

然后你可以使用 jQuery 来处理剩下的:

首先,确保通过将您的 javascript 包装在 .ready 函数中来加载 DOM(因为我们将要修改这些元素)。 然后使用.click 函数将事件处理程序附加到复选框单击事件。 由于我们已经为这个特定标签设置了for 属性,我们可以使用attribute 等于选择器([name="value"]) 通过查找与调用元素的@987654339 具有相同for 值的标签@。 您可以使用:checked 选择器检查引发事件的对象是否被选中。 您可以使用 Javascript 的 ternary 运算符有条件地设置每个值 然后使用.text函数重命名标签

它应该看起来像这样:

$(function () 
    $("#chkCart").click(function () 
        var lbl = $(`label[for='$this.id']`);
        var msg = this.checked ? "Added" : "Add to Cart"
        lbl.text(msg);
    );
);

堆栈片段中的演示和jsFiddle

$(function () 
    $("#chkCart").click(function () 
        var lbl = $(`label[for='$this.id']`);
        var msg = this.checked ? "Added" : "Add to Cart"
        lbl.text(msg);
    );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<input type='checkbox' id='chkCart'/>
<label for='chkCart'>Add to Cart</label>

【讨论】:

【参考方案2】:

见DEMO

在 html 中

<input type="checkbox" id="test"> <label for="test">text</label>

在 JS 中

$(document).ready(function () 
  $("#test").click(function () 
    if ($(this).is(":checked")) 
      $(this).next("label").text("Added");
     else 
      $(this).next("label").text("Add to Cart"); // your default color set
    
  );
);

参考checked

jQuery.next()

【讨论】:

除非您需要,否则您不应该使用prevnext 来依赖元素的顺序。见Select the associated label element of a input field。此外,没有解决 OP 关于如何更改标签 text 的问题【参考方案3】:

您可以将 onChange 事件与您的复选框相关联,如果选中,则显示文本,否则显示链接。 DEMO HERE

HTML 代码:

<input type='checkbox' id='check'/>
<label><a href='#'>add to cart</a></label>

JavaScript/jQuery 代码:

$('#check').change(function()

  if ($(this).is(":checked")) $(this).next().text('added');
  else $(this).next().html("<a href='#'>add to cart</a>");

);

【讨论】:

【参考方案4】:

DEMO

试试这个

$("#chk").click(function () 

    if ($(this).is(":checked")) 
        $(this).next().fadeOut("slow", function () 
            $("#chk").next().text("Added");
        ).fadeIn("slow");

     else 

        $(this).next().fadeOut("slow", function () 
            $("#chk").next().text("Add to cart");
        ).fadeIn("slow");
    

);

html

<input type="checkbox" id="chk">
<label for="chk" style="text-decoration:underline">Add to cart</label>

希望对你有帮助,谢谢

【讨论】:

【参考方案5】:

使用label并设置for属性,可以点击文字,框会被选中/取消选中...

<label for="check1">Label for checkbox</label> 
<input type="checkbox" id="check1" value="value1">Option</input>

【讨论】:

【参考方案6】:

只需在复选框和文本周围放置一个标签文本,它就会变成这样:

    <label><input type="checkbox" />Add to cart</label>

这使得文本成为复选框的一部分

【讨论】:

以上是关于试图有一个链接+复选框,点击时可点击和文本都发生变化的主要内容,如果未能解决你的问题,请参考以下文章

点击超链接时跳转到一个servlet,怎样在servlet中获得checkbox的值

如何使复选框文本的一部分可点击?

如何对项目的复选框和文本以不同的方式处理点击事件? (PyQt/PySide/Qt)

UIButton 标签检测点击特定文本

通过Jquery来处理复选框

iOS 文本自动识别链接并且点击跳转链接