jQuery For Loop图像检查和显示

时间:2015-09-14 13:01:17

标签: javascript jquery html for-loop

下午好,Stack Overflow,

我在编码方面缺乏经验,而且我遇到了一个问题,我正在努力!

如果你允许我设置场景......

我目前正在处理的项目部分涉及用户从仓库中挑选物品以完成装运,在某些情况下,他们必须从不同地点挑选相同的物品,当需要完成时,小“!”项目旁边会显示类型图标。

enter image description here

然后,用户可以点击图标并选择他们将从哪个位置检索库存,然后按模式上的确认,当它关闭时,它将文本设置为蓝色并隐藏图标。

enter image description here

我遇到问题的部分是,一旦建立了所有位置,就需要处理订单,这需要点击一个按钮,我只希望在所有“!”后出现。图标被隐藏。

我知道有很多基于for循环和图像检查的问题并相信我,当我说我努力想弄清楚自己并且我尝试了不同的方法:

ShowProcess = false
for (i = 0; i<Picker; i++) {
if ($('#MultiLocIcon'+i).is(':visible')){
ShowProcess = true
}

if (ShowProcess == true) {
$('#ProcessConfirm').show()
};
};

这显然不起作用,因为它将列表中的第一个变量设置为“true”并始终将其读为true,因此始终显示图像,即使“!”图标仍然存在于其他行中。

我也尝试过使用.each()来测试特定的每一行文字颜色,但也没有运气:

var table = $('#RequestedItemsTable');
table.find('tbody > tr').each(function(){
if $('#Desc').css('color') == '#0000FF'){
//do something

我觉得我的经历让我感到沮丧,因为我还有很多需要学习的地方,并且怀疑这个解决方案会非常简单,但是如果你知道怎么做的话,那就很容易了。

如果有人可以花时间帮我解决这个问题或给我任何建议,我会非常感激。

以下是我的代码中可能有用的部分:

模态“确认”按钮:

//CONFIRM Button which will submit final picks.
'Confirm': function() {

//Reset the length loop
length = undefined;

//Remove "Multiple Location" icon from the row.
$('#icon'+id).hide();

//Change text colour back to blue to have visual confirmation that item   is ready for picking
$('#Desc'+id).css('color', '#0000FF');
$('#QtyReq'+id).css('color', '#0000FF');
$('#QtyinStock'+id).css('color', '#0000FF');

$(this).dialog('close');

“!”图标:

<td id= "MultiLocIcon<?=$i;?>"><?if($row->Count_Location > 1)
    {?><img src="<?=base_url();?>public/css/images/error.png" alt="LocPick" title="Multiple Locations" style="cursor: pointer;" id= "icon<?=$i;?>" onClick="$.LocPick(<?=$i;?>);"/><?}?></td>

基本上只需知道一旦循环检查我的图像如何显示并知道“!”每个可能的行都隐藏了图标。

感谢您的耐心等待。

4 个答案:

答案 0 :(得分:1)

我要做的是根据您的HTML,选择所有警报图标,并在其上执行:visible伪造选择器。这将返回所有可见的警报图标,如果数组中没有,您知道它们都不可见。您需要使用类来识别它们,例如.alert:

if( $(".alert:visible").length === 0 ){
    // Do your code in here for no visible alert icons!
}

答案 1 :(得分:1)

我会给出的最简单的解决方案是将一个类 if (!isVideo(url)) { videoView.setVisibility(View.GONE); Picasso.with(this).load(imageUrl) .into(imageView); } else { Uri uri = Uri.parse(url); videoView.setVideoURI(uri); videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { imageView.setVisibility(View.GONE); videoView.setBackgroundColor(Color.TRANSPARENT); videoView.requestFocus(); videoView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // start your new activity to play video return false; } }); } }); } 添加到具有warning&amp;的所有表格列中。然后检查相同的可见性。

warning icon

答案 2 :(得分:1)

您可能需要在模式逻辑中添加第二张支票,可能是在.hide()之后:

//Remove "Multiple Location" icon from the row.
$('#icon'+id).hide();
$('img[id^=icon]:visible').length || $('#ProcessConfirm').show();

这样做会将:visible伪选择器和所有img标签的正则表达式选择器与id组合,以&#34; icon&#34;开头。这假设您没有任何其他不相关的图片代码,其ID为&#34; icon *&#34;。如果长度为0,它将继续显示#ProcessConfirm元素。

答案 3 :(得分:1)

当用户点击模态确认时,您应该检查仍然可以看到多少个图标,如果金额为0,则显示按钮,如下所示:

// This searchs for every <td> with an id that contains '#MultiLocIcon'
// Then checks if the amount of those which are visible is 0 and do something
if ( $('td[id*=MultiLocIcon]').not(':visible').length === 0 ) {
    $('#ProcessConfirm').show()
}