有没有更好的方法来写这个? [jQuery - 最佳实践 - if语句]

时间:2015-09-22 02:55:56

标签: jquery performance

我在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');          
    }

4 个答案:

答案 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的另一种解决方案。 我不会告诉你它是最好的,但它是一个可能的解决方案。