【问题标题】:Replace function using jquery [closed]使用jquery替换函数[关闭]
【发布时间】:2013-07-01 17:41:30
【问题描述】:

我这里有这段代码:

 txtName.value = txtName.value.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');
txtURL.value = txtURL.value.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');
txtUsage.value = txtUsage.value.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');

我将如何将其放入 jQuery 中?我尝试了很多方法,但都不起作用。

    txtName = $('#emoteName');
    txtURL = $('#emoteURL');
    txtUsage = $('#emoteUsage');

【问题讨论】:

  • 给我们看看!!你的 txtName,txtURL.. 是什么??
  • 我不太确定我是否得到了这个问题。究竟你需要什么来“放入 jQuery”。似乎您已经使用 jQuery 选择器声明了这些变量?
  • @Eric 它们没有被声明为 jQuery 对象,因为 .value 在 jQuery 中不存在,但在纯 JavaScript 中存在...
  • 为什么要使用 jQuery?普通的旧 JS 在这里就足够了。

标签: javascript jquery


【解决方案1】:
var $txtName = $('#emoteName'),
    $txtUrl = $('#emoteURL'),
    $txtUsage = $('#emoteUsage');
$txtName.val($txtName.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));
$txtURL.val($txtURL.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));
$txtUsage.val($txtUsage.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));

请注意看看这个关于 jQuery 性能的特定 article! :)

这也应该很好用,而不是重复代码,只需使用您的 jQuery 对象创建一个数组,并对每个对象应用相同的替换。

var $objs = [
        $('#emoteName'),
        $('#emoteUrl'),
        $('#emoteUsage')
    ];

$.each($objs, function() {
    var $this = $(this),
        val = $this.val();
    $this.val(val.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));
});

【讨论】:

    【解决方案2】:

    试试:

    $txtName.val( $txtName.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '') );
    

    jQuery 对象的变量名称以$ 开头也是常见的做法。

    【讨论】:

      【解决方案3】:

      使用 .val() 获取 jquery 对象的值。因为您的 txtName 已经是一个 jquery 对象

      txtName = $('#emoteName');
      

      您可以只使用 .val() 而不是 valuevalue 用于 DOM 元素

      txtName.val(txtName.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));
      

      其他的也一样。

      【讨论】:

        【解决方案4】:

        如果您想对所有三个字段进行相同的替换,您可以这样做:

        $('#emoteName, #emoteURL, #emoteUsage').val(function(i, currentVal) {
            return currentVal.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');
        });
        

        jQuery's .val() method 允许您获取或设置表单元素的值。如果您pass it a callback function 将为 jQuery 对象中的每个元素调用该函数,则当前值将传递给函数,而函数返回的任何内容都将成为新值。

        【讨论】:

          【解决方案5】:

          试一试:

          var val = txtName.val();
          var new_val = val.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');
          txtName.val(new_val );
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-01-31
            • 1970-01-01
            相关资源
            最近更新 更多