跳到:
内容

BuddyPress.org网站

开的13年前

关闭12年前

上次修改时间8年前

#3821 关闭 增强 (固定的)

从jQuery中的标记取消绑定选择器

报告人: hnla简介 hnla公司 所有者:
里程碑: 1.6 优先: 正常的
严重程度: 正常的 版本:
组件: 模板 关键词: 需求-测试 开发人员反馈 has-patch接口
复写的副本: hugoashmore@…

描述

该补丁删除了绑定到其标记的所有选择器,例如jq('div.item-list-tabs')变为simply('.item-list-tabs`)

此更改的主要目的是促进在不破坏JS的情况下重新计算标记的能力,更具体地说,是为了允许将模板重新计算到html5选择器(如上面的示例所示,其中“div”变为“nav”)

从理论上讲,这是一个安全的改变,不应该引起任何问题。

如果开发人员去其他地方对另一个元素使用令牌,可能会产生后果,但实际上这是一个不明智的举动?

我已经更改了选择器的所有实例,以便在整个global中只留下标记。js可以读取这些更改,但仍在跨安装进行测试,以尝试发现问题,并建议此修补程序在接受之前需要进行深入测试

笔记:

第594行nnwards中构建“bp_filter_request”可能是一个问题,需要仔细检查;我已经从这些不同块的查询中的选择器中删除了div,它不应该出现问题。

值得注意的是,在某些领域,例如我从“div#message”中删除了div,后来我发现它被写为“#message'”的实例表明删除是一个安全的操作,特别是因为ID每页只能使用一次,所以“div”是不必要的,尽管形式上是正确的。

附件(3)

unbind-selectors-from-tokens-#3281-v1.patch(15.9 KB)-由添加hnla公司 13年前.
从jquery中删除元素选择器
3821.02.补丁(14.5 KB)-由添加布内博格斯 12年前.
3821.03(564字节)-由添加hnla公司 12年前.
从“new-topic-post”中删除“div”

将所有附件下载为:.zip文件

更改历史记录(21)

@hnla公司
13年以前

从jquery中删除元素选择器

#1 @约翰詹姆斯·雅各比
13年以前

  • 关键词 犯罪补充
  • 里程碑已从更改等待审查1.6

我觉得不错。不应该破坏任何东西,让代码更便携。

#2 @r-a-y公司
13年以前

补丁的第335行和第1258行可能有问题,因为在活动组件页面上有一个正文类也使用“activity”。

#3 @hnla公司
12年以前

  • 复写的副本 hugoashmore@…补充

嗯,这张票上没有收到通知。

@jjj是的,我认为总的来说感觉不错,但测试起来有点棘手,我们可以让尽可能多的人运行补丁,看看他们的开发安装中是否有js功能中断。

谢谢,我会看看那些台词。

#4 @hnla公司
12年以前

处理第335/1258行时,这听起来怎么样:

原来:
jq(“div.activity”)点击(功能(事件){

我的零钱:
jq('.activity').click(函数(事件){

修改为?

jq(“body.activity”)点击(函数(事件){

如果问题是主体可能包含类“activity”,因此在该事件函数中存在问题,则通过如下方式声明子代选择器集来解决问题.活动now必须是父元素/先行元素的子元素或孙子元素身体希望阻止脚本对body.activity执行操作?

#5 @布内博格斯
12年以前

这可能不会破坏bp-default的任何功能。真正的问题是它是否会破坏加载bp-default的JS的子主题,或者(可能更可能)基于bp模板包构建的主题。

我猜这可能只会出现在边缘情况下,尽管我可能必须仔细研究每一个提议的更改,以便能够明智地进行猜测。

我们有多在乎用子主题破坏bp-default的JS的可能性(尽管可能很小)?

#6 @r-a-y公司
12年以前

hnla-建议的更改更好,但我仍然对.activity选择器的通用性持怀疑态度。一些流氓主题开发人员可能会出于任何原因使用“activity”类!:)

boonebgorges-你说得对。类和ID(如“error”和“message”)可以在WP主题中使用,如果使用BP模板包,则可能会干扰JS。

#7 @hnla公司
12年以前

是的,这是唯一一个值得关注的“边缘案例”,这些令牌被用于其他地方。

“rogue”这个词很贴切,但我会说,如果我在默认状态下使用global.js,那么这样做肯定是不明智和短视的,事实上,以这种方式重用已建立的类或id只是自找麻烦。

问题是,正如布恩早些时候所问的那样,我们有多关心这个可能突破案例的儿童主题?打破儿童主题的简单概念显然是我们永远不想故意做的事情,但在这个例子中,我要说的是,考虑到他们(无赖开发人员)真的不应该这样做,我们不接受这作为不继续下去的理由;这样做的好处是巨大的,而且我担心如果我们不能做到这一点,那么如果子主题或bp-default需要当前的js功能,它们将无法移动到完全实现的HTML5布局。

虽然我仍然担心没有一个更真实的用例会导致或出现尚未考虑到的问题。

#8 @布内博格斯
12年以前

3821.02.patch是hnla的补丁,元素名称重新附加到:
.活动
.错误

还有另外两个选择器是非常常见的单词,可能会导致子主题问题(#sidebar和#message),但由于这两个都是id,因此它们在页面上应该是唯一的。如果不是,那么这是一个更广泛的无效标记问题。

我做了一些测试,这些更改看起来不错。如果没有人反对,我会在几天后提交这一更改。

#9个 @hnla公司
12年以前

刚刚在补丁编号中发现了我该死的诵读困难错误*叹息*

如果你再等几个小时,我在星期六早上用铅笔写了一份修订稿,你会为修订版干杯的:)

我会运行-02补丁,看看它的运行情况。

#10 @hnla公司
12年以前

@Boone应用此修补程序时遇到问题,我注意到标题中显示“Git”,这实际上是Git修补程序而不是SVN吗?

#11 @约翰詹姆斯·雅各比
12年以前

  • 分辨率设置为固定的
  • 状态已从更改新的关闭

(英寸[5756])从global.js修复中的标记取消绑定选择器#3821.道具hnla,boonebgorges。

#12 @hnla公司
12年以前

  • 关键词 开发人员反馈补充;犯罪已删除
  • 分辨率 固定的删除
  • 状态已从更改关闭重新打开的

根据Boone发现的favs/unfavs问题https://github.com/karmatosed/Status/issues/70

重新打开此问题,并可能修复活动收藏夹按钮通过固定因子“.parent().parent).pareent().parent()”遍历dom的问题。当然,与此级别嵌套的按钮的任何偏差都会破坏功能。

建议的修复方法是将.parent()替换为最近的('li')

目前(第192行):

if(target.hasClass('fav')|| target.hassClass(“unfav”)){var type=target.hasClass('fav')?'fav:“unfav”;var parent=target.parent().parent;

替换为:

if(target.hasClass('fav')|| target.hassClass(“unfav”)){var type=target.hasClass('fav')?'fav:“unfav”;var parent=target.closest('li');//。parent().parent();var parent_id=parent.attr('id').substr(9,parent.att('id]).length);警报(parent_id);

Alert()返回正确的id,在测试中,这似乎是一个可行的更改,而且.closest的开销远小于.parent(),后者必须完全遍历DOM到顶层节点并保留数据,而.closet()在第一次匹配时会停止。

虽然我可能还没有发现一些问题,但这种形式在假设能够找到li元素方面仍然有局限性,但列表是活动列表的正确标记。

注:这似乎不一定是对状态主题的修复,因为这似乎有其他问题暴露出来,需要进一步调查。

#13 @布内博格斯
12年以前

hnla-更改为.closest()很聪明。然而,寻找而不是选择器似乎重现了该票据最初要解决的一些问题(即无法将标记更改为更为HTML5ish的内容)。我要用.activity更新而不是。

#14 @布内博格斯
12年以前

  • 分辨率设置为固定的
  • 状态已从更改重新打开的关闭

(英寸[5998])在activity-favoriting JS中查找活动父项时,将parent()walker切换为.closest(),以获得更好的子主题兼容性。修复#3821.道具hnla

#15 @hnla公司
12年以前

LI是选择器;)但的确,这让我很困扰,尽管这表明,任何认为可以改进标记结构而不使用ul/ol构造的人都疯了:)(dl/dd除外)

虽然类标记很好,但我们本质上说,如果您想要脚本功能,请确保使用/保留特定的必需标记,这超出了预期和要求。

我现在想,我/我们需要更详细地阅读这个文件,以了解任何进一步的情况,例如.Pparent().Pparent().Pparent()限制。

#16个 @hnla公司
12年以前

  • 关键词 has-patch接口补充
  • 分辨率 固定的删除
  • 状态已从更改关闭重新打开的

在#new-topic-post第12、14行错过了一个“div”

修补程序3821.03从选择器中删除“div”

@hnla公司
12年以前

从“new-topic-post”中删除“div”

#17 @布内博格斯
12年以前

  • 分辨率设置为固定的
  • 状态已从更改重新打开的关闭

(英寸[6033])更多地解除JS操作与超特定选择器的绑定

此变更集从显示/隐藏#new-topic-post div的bp-default js中删除“div”说明符。

修复#3821
道具hnla

#18 @DJ保罗
8年以前

  • 组件已从更改外观-模板零件模板
注:请参见TracTickets公司有关使用的帮助门票。