获取单击的列表项的范围内的文本
Get text inside span on clicked list item
我有一个列表,其中包含带有值(站点 URL)的 li 项,在列表项内,是跨度内站点的名称。我有全局变量 site、siteUrl 和 siteName,并准备好文档上的值。我不确定为什么,但我可以让 siteUrl 返回单击的列表项的值,而不是 siteName,这是跨度内的文本。我不确定如何在单击的项目的范围内获取文本。
.JS:
siteUrl = null;
$("#expList li").click(function(){
if(this.id != 'myList'){
siteUrl = $(this).attr('value');
siteName = $(this).text();
RefreshSiteInfo();
}else{
siteUrl = $(this).attr('value');
siteName = $(this).clone().children().remove().end().text();
RefreshSiteInfo();
}
return false;
});
.HTML:
<ul id="expList" class="list"><li value="https://hosted.compulite.ca" class="collapsed expanded">
<span class="siteTitle">Sharepoint Demo Website</span>
<ul style="display: block;">
<li value="https://hosted.compulite.ca/academic" class="collapsed expanded"><span class="siteTitle">Academic</span>
<ul style="display: block;">
<li value="https://hosted.compulite.ca/academic/bm"><span class="siteTitle">Board Meetings</span></li>
<li value="https://hosted.compulite.ca/sandbox/trial"><span class="siteTitle">Trial</span></li>
</ul>
</li>
<li value="https://hosted.compulite.ca/service"><span class="siteTitle">Service</span></li>
<li value="https://hosted.compulite.ca/testing"><span class="siteTitle">DemoTesting</span></li>
<li value="https://hosted.compulite.ca/training"><span class="siteTitle">Training</span></li></ul>
</li>
</ul>
$(this).children('span').eq(0).text()
value
不是ul
容器中li
元素的有效属性。为此,您需要使用 data-*
属性并使用 jQuery 的 data()
方法提取数据:
...
<li data-value="foo" class="..." ...>...</li>
...
...
siteUrl = $(this).data('value');
...
由于用户只能单击<span>
中的文本,因此您可以从传递给函数的事件对象中引用它:
siteUrl = null;
$("#expList li").click(function(event){
if(this.id != 'myList'){
siteUrl = $(this).attr('value');
siteName = $(event.target).text();
RefreshSiteInfo();
}else{
siteUrl = $(this).attr('value');
siteName = $(this).clone().children().remove().end().text();
RefreshSiteInfo();
}
return false;
});
演示
.HTML:
<ul id="expList" class="list">
<li data-value="https://hosted.compulite.ca" class="collapsed expanded">
<span class="siteTitle">Sharepoint Demo Website</span>
<ul style="display: block;">
<li data-value="https://hosted.compulite.ca/academic" class="collapsed expanded">
<span class="siteTitle">Academic</span>
<ul style="display: block;">
<li data-value="https://hosted.compulite.ca/academic/bm">
<span class="siteTitle">Board Meetings</span>
</li>
<li data-value="https://hosted.compulite.ca/sandbox/trial">
<span class="siteTitle">Trial</span>
</li>
</ul>
</li>
<li data-value="https://hosted.compulite.ca/service">
<span class="siteTitle">Service</span>
</li>
<li data-value="https://hosted.compulite.ca/testing">
<span class="siteTitle">DemoTesting</span>
</li>
<li data-value="https://hosted.compulite.ca/training">
<span class="siteTitle">Training</span>
</li>
</ul>
</li>
</ul>
jQ:
var siteUrl = '',
siteName = '';
$("#expList li").click(function ( e ) {
e.stopPropagation();
e.preventDefault();
siteUrl = $(this).data('value');
siteName = $(this).text();
alert(siteUrl+' '+siteName);
// RefreshSiteInfo();
});
相关文章:
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 如何使用D3生成特定范围内的随机颜色
- 将自定义css保持在角度范围内
- Angular JS-文本框未在独立范围内更新
- cookie不在网站范围内
- 获取给定JavaScript范围内的解析函数
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- JavaScript-仅验证数值并且在范围内
- JS:从数组中查找特定范围内的最低/最高数字
- 试图检查表单中的值是否为一个设定范围内的数字
- 在十进制范围内搜索
- 基于日期范围的一组日期范围内的天数
- 如何按从当前单词到段落中该句子(.)结尾的范围选择文本
- 如何在 Google 应用脚本中 sendEmail 函数的范围内的唯一非空白列中返回值
- 否则,无法使用 Jquery 更改范围内的文本
- 获取单击的列表项的范围内的文本
- 在范围内获取文本
- 如何使用jQuery突出显示文本区域内的特定范围的文本
- 在自己的范围内设置文本输入
- Javascript函数允许在范围(08 - 15)之间输入时间,或者在单击时在文本框中输入默认(在范围内)时间