如何检查 span 标签是否包含文本

7

查看 fiddle 如果患者已经分配了时间段,则使用jQuery(客户端)使颜色变为黄色。 在我的fiddle中,如果我第一次分配时间段,则颜色为绿色,同时当分配下一个时间段时,则上一个时间段为灰色。我必须将其变为黄色。 为此,我必须找到表格中的span标签并检查其中是否包含文本 如果包含文本,则将其变为黄色。但我是jquery中的新手。我搜索很多但是没有得到。 我该怎么做。

//这是按钮点击代码

  $("#<%=btnSelect.ClientID%>").click(function ()           {


                var cells = $('#tableAppointment tbody tr td:nth-child(3)');


                var i = 0;
                var topcell = false;

                cells.each(function ()
                {
                    var $cell = $(this);

                    if ($cell.hasClass('csstdhighlight'))
                    {
                        if (i == 0)
                        {
                            $cell.find('span').text(jQuery('#<%=txtPatientName.ClientID%>').val());
                            topcell = $cell;
                        }
                        else
                        {
                            $cell.remove();

                        }
                        i++;
                    }
                });
                if (topcell && i > 1) topcell.attr('rowspan', i);
                $("#tableAppointment tr").each(function ()
                {

                    $('td', this).each(function ()
                    {
                        var value = $(this).find("span").val();

                        if (!value)//i m chking like this
                        {

                        }
                        else
                        { //make it yellow                      
                        }
                    })

                })

                return false;
            });
        });

$('#tableAppointment tbody tr td:nth-child(3)') 返回的是一个元素,使用 each 是多余的。 - Ram
console.log未定义。 - Nikhil D
不,console.log() 不是未定义的。 - Ram
如果我第一次分配时间段,则颜色为绿色,同时当分配下一个时间段时,使用jQuery将上一个时间段变为黄色或者使用其他逻辑处理。 - Nikhil D
@nikhil 如果你还有问题,可以来这个房间 http://chat.stackoverflow.com/rooms/12535/anonmous - user1432124
你能提供一个代码更少的 JSFiddle 吗?这样我们就可以更专注于问题了。 - Ram
4个回答

5

+1 谢谢。但是如何遍历表格,如果跨度包含文本,则将该约会标记为黄色? - Nikhil D
@Dipak 如果我第一次分配时间段,那么颜色是绿色的,同时当分配下一个时间段时,先前的时间段会变成黄色。 - Nikhil D
如果找到了一个span,那么如何找到它所在的当前行? - Nikhil D
$(this).parents('tr'); 应该会有所帮助。 - Dipak

3
请使用 $(this).find("span").text(),并检查返回的字符串是否为空。

+1 谢谢……但是如何遍历表格,如果跨度包含文本,则将该约会标记为黄色。 - Nikhil D

2

不要这样做

var value = $(this).find("span").val();

撰写

var value = $(this).find("span").text();

如果您想检查span内部的html,则可以使用
var value = $(this).find("span").html();

更新:

<html><head>
<style>.yell{background:#CCFF00;}.csstd
{
background-color: #ccffcc;
}
table{
background-color: #cccccc;

}</style><script src="jquery.js"></script>
<script>var is=false;
$(function(){

$(document).mouseup(function(){is=false;});
$(".csstablelisttd").mousedown(function(e){sen=$(this);
$(".csstd").removeClass("csstd");
  $(this).children(":not(:first)").addClass("csstd");
  xco=e.clientX;
  yco=e.clientY;
  is=true;
  return false;
});
document.onmousemove=function(){return false;};
$(".csstablelisttd").mouseenter(function(){
if(is){
  $(this).children(":not(:first)").addClass("csstd");
if($(".csstd").length>=6){is=false;}
}
});
$("#update").click(function(){
if($("#names").val())
{
$(".csstd").next().hide();

$(".csstd:first").next().show().attr("rowspan",$(".csstd").length/2).children().html($("#names").val());
$(".csstd").removeClass("csstd").addClass("yell");
}
});
 });</script></head><body>
<table id="tableAppointment" cellspacing="1" width="50%" border="1" align="center">
<thead>
<tr class="csstablelisttd">
<td bgcolor="#ffffff">
</td>
<td >
</td>
<td class="csstablelisttd patientName">
<b>Patient Name</b>
</td>
</tr>
</thead>
<tbody>
<tr class="csstablelisttd">
<td  valign="top" width="70px">
8:00AM
</td>
<td >
0
</td>
<td >
<span></span>
</td>
</tr>
<tr class="csstablelisttd">
<td >
</td>
<td >
15
</td>
<td >
<span></span>
</td>
</tr>
<tr class="csstablelisttd">
<td >
</td>
<td >
30
</td>
<td >
<span></span>
</td>
</tr>
<tr class="csstablelisttd">
<td >
</td>
<td >
45
</td>
<td >
<span></span>
</td>
</tr>
<tr class="csstablelisttd">
<td  valign="top" width="90px">
9:00AM
</td>
<td >
0
</td>
<td >
<span></span>
</td>
</tr>
<tr class="csstablelisttd">
<td >
</td>
<td >
15
</td>
<td >
<span></span>
</td>
</tr>
<tr class="csstablelisttd">
<td >
</td>
<td >
30
</td>
<td >
<span></span>
</td>
</tr>
<tr class="csstablelisttd">
<td >
</td>
<td >
45
</td>
<td >
<span></span>
</td>
</tr>
</tbody>
</table>
<input type="text" id="names" />
<input type="button" id="update" value="update" /> </body></html>

+1 谢谢……但是如何遍历表格,如果跨度包含文本,则将该约会标记为黄色。 - Nikhil D
你在那里,有人遇到麻烦了。 - Nikhil D

1

这就是你想要的吗?

查看演示:http://jsfiddle.net/FDEep/3/

$('input').click(function(){
    // All <span> inside <td>
    $('td span').each(function(index){
        // Check if 'span' is empty
        if( $(this).text().length !== 0 ){
            // Change the bg color of the 'span' not empty
            $(this).parent().css('background-color', 'yellow');
            // When a span with some value is found, alert the index of the row
            alert( $(this).closest('tr')[0].rowIndex);
        }
    });
});

根据您的意愿进行适应


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接