我在SharePoint 2013中工作(仅供参考),我有一些带标题的(.aspx)页面。
我正在运行一个脚本,它基本上会检查我所在页面的标题,如果它与我的任何查询标题匹配,那么它会将空白的href =“variable-link”附加到与页面相关的URL。< / p>
(即:如果页面名称包含单词“home”,则将此“更多信息”链接转到http://home-info.aspx)
我在以下代码中使用此功能。我想知道是否有更好,更有效的方式来写这个。
/* Attach HREF to appropriate Function Page Events */
if($("#pageTitle > span:contains('Americas')").length > 0) {
$("a.events-link").attr("href", 'Americas-Events.aspx');
}
if($("#pageTitle > span:contains('APAC')").length > 0) {
$("a.events-link").attr("href", 'APAC-Events.aspx');
}
if($("#pageTitle > span:contains('EMEA')").length > 0) {
$("a.events-link").attr("href", 'EMEA-Events.aspx');
}
答案 0 :(得分:2)
我想我会使用一个数组来放入文本字符串,然后用$.each
循环。当它找到匹配时,它将使用return false
来中断循环。
var options = ['Americas','APAC','EMEA'];
$.each(options, function() {
var that = this.toString(),
present = $('#pageTitle span:contains(' + that + ')');
if (present.length) {
$('a.events-link').attr('href', that + '-Events.aspx');
return false;
}
});
答案 1 :(得分:0)
只能一次搜索该元素会更有效。
$("a.events-link").attr("href", function(i, href){
// get text from title element and don't have to search dom for it again
var pageTitle = $('#pageTitle > span').text();
// text comparison/href value setting
if( pagetTitle.indexOf('Americas') >-1){
href = 'Americas-Events.aspx';
}else if( pagetTitle.indexOf('APAC') >-1){
href = 'APAC-Events.aspx';
}else if( pagetTitle.indexOf('EMEA') >-1){
href = 'EMEA-Events.aspx';
}
// will return original href if no other matches
return href;
});
上面使用了稍微不同的方法attr(function)
答案 2 :(得分:0)
我不确定这是否是最佳方式,但你可以这样做:
public static final byte ALG_PSEUDO_RANDOM 1
public static final byte ALG_SECURE_RANDOM 2
答案 3 :(得分:0)
var href;
var span = $("#pageTitle > span").text();
switch (span) {
case ('Americas'):
href= 'Americas-Events.aspx';
break;
case ('APAC'):
href= 'APAC-Events.aspx';
break;
case ('EMEA'):
href= 'EMEA-Events.aspx';
break;
$("a.events-link").attr("href", href);
这是使用switch的另一种解决方案。 我不会告诉你它是最好的,但它是一个可能的解决方案。