我可以证明过于复杂,所以如果我走下兔子洞,请阻止我。我在点击一个复选框时尝试获取某个范围的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)) }} <i class="icon-thumbs-up program_this"></i> Read
@else
<input type="checkbox" class="checkIt" name="{{ $cover_design_note->id }}" /><span id="messRead{{ $cover_design_note->id }}"> Unread</span>
@endif
</p>
答案 0 :(得分:1)
在javascript中,使用+
:
你的选择器应该是:
$('#' + readInput).text('Read');
可能更容易移动到span
标记的html中的类,例如:
<强> HTML 强>
<div class="memo">
<p class="pull-right check">
<i class="icon-thumbs-up program_this"></i>
<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/
答案 1 :(得分:1)
试试这个:
$(this).closest(".check").find("span").text('Read');
在点击处理程序this
中是单击的元素,然后.closest(".check")
为您提供包含"check"
段的元素,然后从那里可以找到范围。
您根本不需要使用元素的ID,因为虽然您可以在执行此操作时检索ID,但您必须已经拥有对正确元素的引用,因此您只需设置其.text()
直接