升级到WordPress 3.1时出现奇怪的jQuery问题

时间:2011-02-27 作者:Edward

安装Wordpress 3.1后,jquery插件selectbox 我再也不用百分之百地工作了

我在wordpress后端使用此插件替换<select></select> 我可以在自定义html代码上应用css,但在wordpress 3.1中<select> 不要100%被替换,<option> 例如,替换的代码中缺少

<select>
  <option (some attributes...)>text</option>
  <option (some attributes...)>text</option>
</select>
应替换为(实际上不是替换,原始<select> 将被隐藏)

<div class="jquery-selectbox">
<div class="jquery-selectbox-moreButton"></div>
<div class="jquery-selectbox-list jquery-custom-selectboxes-replaced-list">
  <span>text</span> /* option 1 */
  <span>text</span> /* option 2 */
</div>
<span class="jquery-selectbox-currentItem">text of selected option</span>
</div>
而实际结果是

<div class="jquery-selectbox">
<div class="jquery-selectbox-moreButton"></div>
<div class="jquery-selectbox-list jquery-custom-selectboxes-replaced-list">
  /* nothing here */
</div>
<span class="jquery-selectbox-currentItem">nothing here</span>
</div>
奇怪的是还有很多<select> 一定要100%更换。

我尝试回滚到wordpress 3.0并重新安装了两次wordpress 3.1,一旦回滚到3.0,脚本就可以完美运行,只要安装了3.1,问题就会出现。

我的测试站点中没有wp插件,jquery库首先被完全加载,我的其他脚本都运行良好。我搜了很多,运气也不好,但我发现了问题发生的地方,不知道为什么会这样。

return this.each(function() { // for each <select>
    var _this = jQuery(this);
        ... // I added an alert here, alert(_this.attr(\'id\')), to print <select> id, and all <select> id are catched
        jQuery(\'option\', _this).each(function(k,v){
            ... // I added a same alert at first line this function, only replaced 100% <select> id are catched
        }); 
        ...
    });
这是插件代码做的替换,对于所有没有得到100%替换的插件代码<select>, 我上面评论的这句话没有得到实现,看起来像是被跳过了。

有什么想法吗?

<小时>[Update]我删除了所有其他脚本和插件,下面是我脚本中剩下的唯一代码

jQuery(document).ready(function() {
  jQuery(\'#myadmin select\').each(function() {
      jQuery(this).find(\'option\').addClass(\'huh?\');
  });
 });
这些选项中的所有选项均未100%替换<select> 你没听懂这门课吗

<小时>[Update 2]我将更新1中的脚本更改为

jQuery(document).ready(function() {
  jQuery(\'select option\').addClass(\'huh?\');
 });
你猜怎么着?全部的<option> 有这门课吗。这与jQuery类似,但为什么是WP 3.1呢?

<小时>

[Resolved]

WP 3.1将jQuery版本升级到1.4.4,我注销了它,并在我的页面上带回了jQuery 1.4.2,现在一切都好了,所有<select> 100%替换

最后一个问题是如何将此问题标记为已解决?

1 个回复
SO网友:wyrfel

在此基础上:

至于您的问题的答案,如果您使用this变量,那么嵌套eaches在jQuery中不起作用。要解决您的问题,请尝试使用each.

在回答中here.

结束

相关推荐

Changing Admin Menu Labels

我用了最后一天的时间使用这些函数。php文件为我的客户端站点完全定制WordPress。我很惊讶我能完成这么多,也很惊讶它能让我的客户更轻松。我已删除了未以管理员身份登录的用户的某些菜单项。我希望(从我所读到的内容来看,我知道这是可以做到的)找到一种方法来重命名一些菜单项(管理区域的左侧边栏)。例如,将帖子更改为文章。如果有人能提供函数的代码。php文件或指向我的方向,我将不胜感激!