小编Mr.*_* Jo的帖子

如何检测 contenteditable div 内的 HTML 更改?

我的 contenteditable div 有问题。我目前正在尝试检测 div 元素中的任何变化。到目前为止,这效果很好。但是当我通过 jQuery 更改内容时它失败了:

jQuery(document).ready(function($) {
  let input = $("#input");

  input.on("input", function() {
    console.log($(this).html().length);
  });

  $("button").click(function() {
    input.html(input.html() + `<span class="emoji"></span>`);
  });
});
Run Code Online (Sandbox Code Playgroud)
div {
  border: 1px solid #aaaaaa;
  padding: 8px;
  border-radius: 12px;
  margin-bottom: 20px;
}

[contenteditable=true]:empty:before {
  content: attr(placeholder);
  display: block;
  color: #aaaaaa;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="input" placeholder="Schreib eine Nachricht..." contenteditable="true" spellcheck="true"></div>
<button>Add element to contenteditable div</button>
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?我可以在我的点击事件中执行此检查,但我需要添加很多,所以我不想每次都这样做。在这种情况下,我认为最好在一个输入检查函数中完成此操作。

html javascript jquery

2
推荐指数
1
解决办法
785
查看次数

文本更改时角度淡入/淡出不起作用

我目前正在尝试用 Angular 构建一个单词轮播。这个想法是有一个包含 x 元素的数组,这些元素每 3 秒改变一次,并带有淡入淡出,这样看起来就不难了。问题是我刚刚设法在初始页面加载时显示淡入淡出动画,但不是在每个单词更改时显示淡入淡出动画。

这是我的动画:

animations : [
  trigger('fadeAnimation', [
    state('in', style({opacity: 1})),
    transition(':enter', [
      style({opacity: 0}),
      animate(600)
    ]),
    transition(':leave',
      animate(600, style({opacity: 0})))
  ])
]
Run Code Online (Sandbox Code Playgroud)

这是我的 HTML 元素:

<span *ngIf="wordCarousel" id="word-carousel"
      #wordCarousel [@fadeAnimation]="'in'">{{wordCarousel[0]}}</span>
Run Code Online (Sandbox Code Playgroud)

这是我改变话的地方:

@ViewChild('wordCarousel', {static: false}) wordCarouselEl: ElementRef;

wordCarousel = [
  'Hallo',
  'Hello',
  'Servus'
];
wordCounter = 1;

ngAfterViewInit() {
  if (this.wordCarousel) {
    setInterval(() => {
      this.wordCarouselEl.nativeElement.innerHTML = this.wordCarousel[this.wordCounter];
      this.wordCounter++;
      if (this.wordCounter >= this.wordCarousel.length) {
        this.wordCounter = 0;
      }
    }, 3000);
  }
Run Code Online (Sandbox Code Playgroud)

您可以在这里找到一个工作示例: https: //angular-ivy-gsunum.stackblitz.io

谢谢你帮我找到问题。

javascript animation typescript angular

2
推荐指数
1
解决办法
1322
查看次数

JavaScript:从URL搜索参数中删除值

我在这里有这个URL:

http://localhost.com/?color=Red,Blue,Green
Run Code Online (Sandbox Code Playgroud)

URL也可以采用以下格式:

http://localhost.com/?color=Red,Green,Blue
Run Code Online (Sandbox Code Playgroud)

我现在正在尝试Green从URL中删除值,包括,它是否充当分隔符.我在这里试过这个RegExp:

var name = 'Green';
var re = new RegExp('(' + name + ',|' + name + ')');
var newUrl = window.location.search.replace(re, '');
window.history.pushState(null, null, newUrl);
Run Code Online (Sandbox Code Playgroud)

所以我想说的是,删除Green,或者Green如果Green,找不到,将使用第二次检查.但是当我运行它时,URL看起来像这样:

http://localhost.com/?olor=Red,Green,Blue
Run Code Online (Sandbox Code Playgroud)

c从完全奇怪的颜色中删除了它.我已经RegExp在一个工具中测试了我的在线并且选择了文本但是在这里它不起作用.我又做错了什么?

更新

这是与Brunos答案的尝试,但正如你所看到的,有时它不会:

function replaceColor(search, name) {
  var reS = new RegExp(`=${name}(,|$)`);
  var reM = new RegExp(`,${name},`);
  var reE = new RegExp(`\b${name}$`);
  return search
    .replace(reS, '=')
    .replace(reM, ',')
    .replace(reE, '')
    .replace(/,$/, '')
}

alert(replaceColor('?size=K,M,S&color=Green,Red,Black', …
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
1
解决办法
93
查看次数

在 Woocommerce 中更新状态之前获取最后的旧订单状态

我目前正在寻找一种在更新订单状态之前获取订单状态的方法。


例如,我的订单具有状态in-progress,我使用此函数以编程方式将订单状态更改为wc-completed

$order->update_status( 'wc-completed' );
Run Code Online (Sandbox Code Playgroud)

当订单状态为wc-completed我有一个发送电子邮件的触发器。但我现在需要检查当前状态之前的状态是否为in-progress. 如果这是真的,我需要跳过触发器:

$latest_status = get_order_status_before_current_one($order_id);
if ($latest_status !== 'in-progress') {
    // Triggers for this email.
    add_action( 'woocommerce_order_status_completed_notification', array( $this, 'trigger' ), 1, 2 );
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到这个目标?

php wordpress metadata orders woocommerce

1
推荐指数
1
解决办法
2942
查看次数

在PHP中获取URL的一部分不能完全正常工作

我在这里有此代码:

$url = 'https://www.my-page.de/account/show/4913';

echo substr( $url, strrpos( $url, '/' ) + 1 );
Run Code Online (Sandbox Code Playgroud)

这会返回我所需的ID:

4913
Run Code Online (Sandbox Code Playgroud)

现在问题开始了。在某些情况下,URL如下所示:

$url = 'https://www.my-page.de/account/show/4913/';

$url = 'https://www.my-page.de/account/show/4913/?conversationId=xxx';
Run Code Online (Sandbox Code Playgroud)

这意味着我的代码不再起作用。那么,有什么办法可以确保我始终从URL获得我的ID?ID从一开始就始终位于同一位置,但结尾可以不同。

更新资料

当我在这里有这段代码时,我不再是最后一部分了。任何想法为什么以及如何解决这个问题?

$url = 'https://my-page.de/account/show/4913/';
$id = basename( dirname( $url ) );
Run Code Online (Sandbox Code Playgroud)

我只想确保它在每种情况下都有效。在这种情况下,所选零件为:

show
Run Code Online (Sandbox Code Playgroud)

php url

1
推荐指数
1
解决办法
37
查看次数

如何通过保持 WordPress 命名约定来处理 Composer 自动加载?

我有点困惑,因为我正在使用 Composer 为 WordPress 编写一个插件,因为这是真正的方法。

所以我在我的插件和其他一些东西中创建了一个作曲家文件。在作曲家文件中,我添加了用于自动加载的命名空间:

"autoload": {
  "psr-4": {
    "Johnny\\Lolkick\\": [
      "includes/classes/"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的类文件夹中,我现在创建了一个名为 的类class-main.php。由于 WordPress 命名约定,我决定采用此名称:

https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#naming-conventions

该类本身被命名为class Main {. 在我的基本插件文件中,我现在创建了一个失败的类的新实例。更改文件名后就Main.php可以了。

因此,WordPress 的命名约定破坏了 Composer 的自动加载。我现在想知道你如何处理这个问题?我应该如何使用 Composer 来保持命名约定?

php wordpress plugins composer-php

1
推荐指数
1
解决办法
330
查看次数

如何按自定义产品属性过滤 WooCommerce 商店产品(产品循环)?

我正在寻找一种简单的方法来通过自定义产品属性过滤商店循环内的所有 WooCommerce 商店产品,如下所示:

\n

在此输入图像描述

\n

这些属性可以有很多带有特殊字符(除了普通拉丁字符之外)的值,例如\xc3\xbc\xc3\x9f

\n

我在 Stack Overflow 上做了很多研究,但还没有找到好的解决方案。

\n

php regex mysql wordpress woocommerce

1
推荐指数
1
解决办法
956
查看次数

0
推荐指数
1
解决办法
3225
查看次数