0

可以证明,我已经使这件事复杂化了,所以如果我要进入兔子洞,请阻止我。我试图在单击复选框时获取跨度的 id,然后更改该跨度中的内容。

我已经尝试了一些事情,我认为我在正确的轨道上,但正如我所说,我倾向于过度复杂化这些事情。顺便说一下,所有的 id 都是不同的,并且由数据库 id 号设置。

我试过这个

var readInput = $(".check span").attr('id');
$('#'.readInput).text('Read');

什么样的作品。除了即使我点击第三个或第四个复选框,它也只会抓取第一个 id....它也不会更改文本。

我也尝试过抓住跨度,然后以这种方式识别,但这与我所需要的相差甚远。

任何帮助都会很棒!

整个函数看起来像这样......虽然这个问题有很多是不必要的。

$('.memo input.checkIt').on("click", function(){
  var name_attr = $(this).attr('name');
  var hidden_input = $('input[name="' + name_attr + '"]');

  if($(this).siblings('a').attr("class") == 'checked') {
    hidden_input.val(0);
  }else {
    hidden_input.val(1);
    $(this).attr('disabled','disabled').parent().addClass('disabled');

    var readInput = $(".check span").attr('id');
    $('#' + readInput).text('Read');

    console.log(readInput);
  }
}); 

这是html

<p class="pull-right check">
@if($cover_design_note->is_read)
    {{ date('m/d/Y g:i a', strtotime($cover_design_note->date)) }}&nbsp;&nbsp;<i class="icon-thumbs-up program_this"></i> &nbsp; Read
  @else
    <input type="checkbox" class="checkIt" name="{{ $cover_design_note->id }}" /><span id="messRead{{ $cover_design_note->id }}"> Unread</span>
  @endif
</p> 
4

2 回答 2

1

在 javascript 中,连接是用一个+

您的选择器应该是:

$('#' + readInput).text('Read');

将标签移到 html 中的类可能更容易,span例如:

HTML

<div class="memo">
<p class="pull-right check">
&nbsp;&nbsp;<i class="icon-thumbs-up program_this"></i> &nbsp;
    <input type="checkbox" class="checkIt"/>
    <span id="somethingDynamic" class="messRead"> Unread</span>
</p> 
</div>

这真的会归结为javascript:

$('.memo input.checkIt').on("click", function(){
    //omitted other parts of code
    $('.messRead', $(this).parent()).text('Read');
 });

Javascript

$('.memo input.checkIt').on("click", function(){
    $('.messRead', $(this).parent()).text('Read');
 });

JSFIDDLE:http: //jsfiddle.net/BYU3w/

于 2013-08-22T22:38:34.213 回答
1

试试这个:

$(this).closest(".check").find("span").text('Read');

在点击处理程序this中是被点击的元素,然后.closest(".check")为您提供该元素的包含"check"段落,然后您可以从那里找到跨度。

您根本不需要使用元素的 id,因为虽然您可以在这样做时检索 id,但您必须已经拥有对正确元素的引用,因此您可以直接设置它.text()

于 2013-08-22T22:47:48.427 回答