1

请不要笑太多。我知道 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');}
4

2 回答 2

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

这个我还没有解决。

于 2013-08-15T18:46:38.980 回答
0

对于第一个,为什么需要这样的选择器?你不能找到一些不太具体的东西来挂钩吗?如果在连接数字和字符串时必须保留它,JavaScript 将在幕后将数字转换为字符串,因此您实际上不需要 .toString() 并且可以在选择器之外执行“数学”+/-1使其更具可读性。

编辑 关于您的评论,我不太确定您的意思,您可以为“发布”项目分配一个类,然后将唯一 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'); 
    }
}

结束编辑

希望能帮助到你,

于 2013-08-09T06:43:28.547 回答