简单的级别,在DOM中选择元素,优化,创建方法功能

时间:2013-08-09 06:33:59

标签: javascript jquery function dom optimization

请不要笑太多。我知道jQuery和JS一段时间了。

1)如何提高此代码的效率?第一行是我如何“选择”元素,第二行是 准备“选择”下一个或上一个元素

jQuery('code:lt('+((aktywneZdanie+1).toString())+'):gt('+((aktywneZdanie-1).toString())+')').removeClass('class2');}
aktywneZdanie=aktywneZdanie-1

2)我无法创建一个作为方法工作的函数。我的意思是如何改变:

jQuery('#something').addClass('class1')
                    .removeClass('class2');

这样的事情:

jQuery('#something').changeClasses();
function changeClasses(){
                         .addclass('class1');
                         .removeClass('class2');}

2 个答案:

答案 0 :(得分:0)

对于第一个,你为什么需要这样的选择器?难道你找不到一些不太具体的钩子?如果在加入数字和字符串时必须保留它,JavaScript会在幕后将数字转换为字符串,这样你就不需要.toString()并且可以在选择器之外执行“maths”+/- 1使其更具可读性。

修改 关于你的评论我不太清楚你的意思,你可以为“post”项目分配一个类,然后将唯一的id添加到数据属性ID。为了简化你可以做这样的事情:

var codeLt = aktywneZdanie + 1,
codeGt = aktywneZdanie - 1;

$('code:lt(' + codeLt + '):gt(' + codeGt +')').removeClass('class2');

结束修改 第二个解决方案应该可行,你所做的就是将你的选择器中的dom元素传递给一个jQuery“数组”函数,在其中操作你的需求

对于你的第二个问题,为什么不只是打开和关闭课程?有一个反映第一类的默认状态?

jQuery('#something').toggleClass('uberClass');

或者您可以将选择器传递给函数

changeClasses(jQuery('#something'));

然后在你内部对返回元素进行操作。

修改 你的代码应该可以正常工作,但是id建议检查以确保你有一个元素可以工作:

changeClasses(jQuery('#something'));
function changeClasses($element){ 
    if($element.length > 0) {
        $element.addClass('class1'); 
    }
}

结束修改

希望它有所帮助,

答案 1 :(得分:0)

  

1)如何提高此代码的效率?第一行是如何“选择”元素,第二行是如何准备“选择”,下一个或上一个元素。

jQuery('code:lt('+((aktywneZdanie+1).toString())+'):gt('+((aktywneZdanie-1).toString())+')').removeClass('class2');}

aktywneZdanie = aktywneZdanie-1

我停止创建这个如上所述的这个奇怪的代码,而不是我开始使用.slice()(不要忘记在这里使用.index()),。。prev(),。next()。只有这三个,一切都更快,更清晰。下面就是一个例子。不,它没有做任何合乎逻辑的事情。

var activeElem = jQuery('code:first');
var old Elem;
jQuery('code').slice('0',activeElem.index()).addClass('class1');
oldElem=activeElem;
activeElem=activeElem.next();
jQuery('code').slice(oldElem.index(),activeElem.index()).addClass('class1');
oldElem.toggleClass('class1');
activeElem.prev().toggleClass('class1');

和第二部分

  

2)我无法创建一个作为方法工作的函数。我的意思是如何改变:

jQuery('#something').addClass('class1')
                    .removeClass('class2');
  

这样的事情:

jQuery('#something').changeClasses();
function changeClasses(){
                         .addclass('class1');
                     .removeClass('class2');}

我还没有解决这个问题。