[英]Selecting a div unselects the other divs like a radio button?
我已经使用数据库中的循环创建了一个div列表。
当我单击选择..它变得像
我面临的问题是一次只能选择一个公司...我该如何选择一家将使先前选择的公司取消选择的公司...程序是这样的...
{section name=i loop=$id7}
<div class="company" style="width:220px; height:220px; background-color:white;margin-left:12px;margin-bottom:22px;float:left;" >
<div id="ctable">
<table style="margin-top:20px;margin-left:18px;width:178px;height:149px;">
<tr style="text-align:center;">
<td colspan="2" align="center" valign="center" height="42px">{$id7[i].vCompanyName}</td>
</tr>
<tr>
<td colspan="2" align="center" valign="center" height="107px">
<img src="{$tconfig.tsite_images}{$id7[i].vImage}">
</td>
</tr>
</table>
</div>
<div id="selecty" class="{$id7[i].iEmployerId}" style="width:178px;height:32px; margin-left:18px;">
<a href="javascript:void(0);" onclick="selecty_hide('{$id7[i].iEmployerId}','{$smarty.section.i.index}')" class="but_blue_small">Select</a>
</div>
<div id="selected_state" style="width:198px;height:32px;display:none;background-color:white;margin-left:16px;">
<img src="{$tconfig.tsite_images}tick.png" /> <font color="#cdcdcd"><b>Company selected</b></font>
</div>
</div>
{/section}
它的javascript是这样的
<script>
function selecty_hide (eid,compid) {
alert(eid);
alert(compid);
document.getElementById('selecty').style.display="none";
document.getElementById('selected_state').style.display="block";
document.getElementById('eid').value=eid;
}
</script>
如果可以使用jQuery,那很容易
<div class="mydiv" style="cursor: pointer;">
box 1
</div>
<div class="mydiv" style="cursor: pointer;">
box 2
</div>
<div class="mydiv" style="cursor: pointer;">
box 3
</div>
<script type="text/javascript">
$(".mydiv").click(function() {
if($(this).hasClass("selected") == false) {
$(".mydiv").removeClass("selected");
$(this).addClass("selected");
} else {
$(".mydiv").removeClass("selected");
}
});
</script>
这将从具有“ mydiv”类的所有元素中删除“ selected”类,然后将其添加到您单击的单个元素中。
它还支持取消选择当前元素+您可以完全放下按钮,这足以单击div!
您应该能够根据您的代码调整我的示例。
您现在需要做的就是为div定义一个自定义类,该类将显示不同的内容,例如,当div具有“ selected”类时仅显示“ company selected”。
玩得开心,祝你好运!
假设您有一个针对所选公司div的类(selected_company)。 当有人选择任何其他div时,则获取先前选择的div并删除该类,然后将该类添加到当前选定的div中。
像这样:
$(".selected_company").removeClass('selected_company');
$(this).addClass('selected_company');
然后一次只能选择一家公司。
这是一个示例演示: http : //jsfiddle.net/kRD4S/
可以对javscript进行少量修改,如下所示
<script>
function selecty_hide (eid,compid,element) {
alert(eid);
alert(compid);
document.getElementById('selecty').style.display="none";
document.getElementById('ctable').style.display="none";
document.getElementById('selected_state').style.display="none";
element.style.display="block";
document.getElementById('eid').value=eid;
}
需要在函数调用(第三个参数)期间传递另一个参数为“ this”
onclick="selecty_hide('{$id7[i].iEmployerId}','{$smarty.section.i.index}',this)"
上面的脚本将首先不显示ID为selecty,ctable,selected_state的所有div,这将显示阻止所选的div。
希望这对您有帮助
认为它略有不同。 如果选择了公司A,并且用户现在选择了公司B:
如果您这样做,就可以轻松找出需要取消选择的公司。
像这样:
$(".company").click(function() {
//remember the new item
var clickedItem = $(this);
//unselect everything
$(".company").removeClass("companySelected");
//select the company that was clicked
clickedItem.addClass("companySelected");
});
看起来很简单,您可以通过以下方式解决您的问题:添加和删除CSS类。
我在这里做了一个完整的JSFiddle,让您知道我在说什么。
将HTML公司Div修改为仅一个div,而不是两个div:
<div id="selecty" class="selectable_state" onclick=select_unselect('{$id7[i].iEmployerId}','{$smarty.section.i.index}') >
Select
</div>
并修改了js:
function select_unselect(eid,compid){
alert(eid);
alert(compid);
if ($(this).hasClass('selectable_state'))
{
$(this).removeClass('selectable_state');
$(this).addClass('selected_state');
$(this).html('Company Selected');
$('#eid').val(eid);
}else{
$(this).removeClass('selected_state');
$(this).addClass('selectable_state');
$(this).html('Select');
$('#eid').val('');
}
}
附言:请注意,在提琴中我删除了该函数的一些参数以使其正常工作,因为我没有所有数据可以使其正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.