0

我想要一个函数,它会返回一个或多个连接到元素的变量,例如返回指定边框或边框的颜色(将使用 jQuery):

$('element').borderColor(); // should return "red, blue, green, orange"
$('element').borderColor('left'); // should return "red"
$('element').borderColor('left', 'right'); // should return "red, green"

等等。

这是示例:http: //jsfiddle.net/DkGpP/

问题 1:我应该如何构造脚本的一部分(实际上是 if/else)以仅返回我想要的内容(实际上是$('element').borderColor('left', 'right');仍然只显示“红色” )?

问题 2:可以在没有撇号的情况下调用我的函数中的参数,例如:

$('element').borderColor(left);
$('element').borderColor(left, right);

如果是,如何重建它(实际上显示“未定义”)。是否需要构建如下功能:

jQuery.fn.borderColor = function(left, top, right, bottom) {

?

我将不胜感激。

4

3 回答 3

1

我会使用这样的东西。

function borderColor(object){
    for(var ele in object){
       if(ele=="left"){
       }else if()....
    }
}

对象将是数组。

于 2013-04-15T14:34:51.377 回答
1

您不需要 if-else 结构。

jQuery.fn.borderColor = function() {    
    var tag = $(this).eq(0), ret = [];
    var arr = arguments.length > 0 ? arguments : ["left","top","right","bottom"];
    for (var i = 0; i < arr.length; i++) {
        ret.push(tag.css("border-" + arr[i] + "-color"));
    }
    return ret.join(","); // remove .join(",") to get a useful array
};

var myborder = $('#tester').borderColor('left', 'right');
$('#result').text(myborder);

Demo

于 2013-04-15T14:44:55.290 回答
0

当我必须处理多个参数时,我通常更喜欢走“选项”的方式,这意味着参数是一个定义了各种属性的 js 对象。

在您的示例中,我会这样编写测试:

if (border == null) // or undefined, add a test here
    return [borderLeft, borderTop, borderRight, borderBottom];

// skip the else
result = [];
if (border.left)
    result.push(borderLeft);
if (border.right)
    result.push(borderRight);
// etc. etc.
return result;

并像这样调用函数:

var myborder = $('#tester').borderColor({ left: true, right: true });

如您所见,我正在传递一个对象,只定义了左属性和右属性。我将它们设置为 true,但任何评估为“真实”值的东西都可以。

小提琴:http: //jsfiddle.net/DkGpP/2/

于 2013-04-15T14:47:13.970 回答