下面您将看到我当前正在使用的 javascript/jQuery 函数:
var forward = new RegExp('forward'),
backward = new RegExp('backward'),
left = new RegExp('left'),
right = new RegExp('right');
if ( tweet.message.match(forward) ) {
console.log('forward');
body.addClass('forward');
bodyRemoveClass();
}
if ( tweet.message.match(backward) ) {
console.log('backward');
body.addClass('backward');
bodyRemoveClass();
}
if ( tweet.message.match(left) ) {
console.log('left');
body.addClass('left');
bodyRemoveClass();
}
if ( tweet.message.match(right) ) {
console.log('right');
body.addClass('right');
bodyRemoveClass();
}
一切正常,但我对它的编写方式不是 100% 满意。
基本上,它的作用是检查给定的关键字(向前、向后、向左或向右)
在推文中 (tweet.message)
我想知道是否有一种更简单/更简洁的方法来实现这一目标。
抱歉,没有在线示例...
谢谢
最佳答案
这里不需要将 match()
与 Regexp
一起使用。您可以使用 indexOf()
进行简单的字符串匹配。然后,您可以避免在开头声明所有 Regexp
。
if ( tweet.message.indexOf("forward") > -1) {
console.log('forward');
body.addClass('forward');
bodyRemoveClass();
}
if ( tweet.message.indexOf("backward") > -1) {
console.log('backward');
body.addClass('backward');
bodyRemoveClass();
}
if ( tweet.message.indexOf("left") > -1) {
console.log('left');
body.addClass('left');
bodyRemoveClass();
}
if ( tweet.message.indexOf("right") > -1) {
console.log('right');
body.addClass('right');
bodyRemoveClass();
}
但是,使用一组类可以更巧妙地完成此操作:
// Store your 4 classes in an array
var classes = ["forward","backward","left","right"];
for (var i = 0; i<classes.length; i++) {
// Check each class appearing in the message:
if ( tweet.message.indexOf(classes[i]) > -1) {
console.log(classes[i]);
body.addClass(classes[i]);
bodyRemoveClass();
}
}
关于Javascript 函数整理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8452211/