首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery:将事件关联到现有元素和新元素

jQuery:将事件关联到现有元素和新元素
EN

Stack Overflow用户
提问于 2015-06-17 14:43:38
回答 4查看 26关注 0票数 0

我有一个代码来更改一个输入值,点击+/-符号。当值为1时,字符-消失。

我的疑问是:当页面被加载时,我希望“-”也会消失。怎么做?

我已经尝试过了,在下面这样使用trigger,但是它不起作用:

代码语言:javascript
运行
复制
$(document).on('change', 'input', function() {
 //...
}).trigger('change');

这是我的密码:

代码语言:javascript
运行
复制
$(document).on('change', 'input', function() {

  if ($(this).val() == 1) {
      $('.substract').hide();
  }   
});


$('.add').on('click', function() {
    
    var old_value = parseInt($('input').val());
    $('input').val(old_value + 1).change();

})

$('.substract').on('click', function() {
    
    var old_value = parseInt($('input').val());
    $('input').val(old_value - 1).change();
})
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input  type="text" value="1">
<span class="add">+</span>
<span class="substract">-</span>

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-17 14:46:57

我建议你使用CSS

代码语言:javascript
运行
复制
.substract { display:none; }

但是,使用jQuery,只需触发inputchange事件即可。由于您使用的是事件委托,所以您是使用document绑定事件,而不是用input绑定事件,因此.trigger('change');没有工作。

代码语言:javascript
运行
复制
 $('input').change();

代码语言:javascript
运行
复制
$(document).on('change', 'input', function() {

  if ($(this).val() == 1) {
    $('.substract').hide();
  }
});


$('.add').on('click', function() {

  var old_value = parseInt($('input').val());
  $('input').val(old_value + 1).change();

})

$('.substract').on('click', function() {

  var old_value = parseInt($('input').val());
  $('input').val(old_value - 1).change();
})

$('input').change();
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="1">
<span class="add">+</span>
<span class="substract">-</span>

票数 1
EN

Stack Overflow用户

发布于 2015-06-17 14:47:36

你为什么不直接在加载时使用一种样式:

代码语言:javascript
运行
复制
<span class="substract" style='display:none'>-</span>

或者如果你害怕jQuery

代码语言:javascript
运行
复制
jQuery(document).ready(function($){
     $('.substract').hide();
}

请记住等待DOM就绪,以确保元素已加载。我将选择第一个版本,避免用户看到按钮,然后看到它在几秒钟后消失。

票数 0
EN

Stack Overflow用户

发布于 2015-06-17 14:50:08

我会把负数藏起来

<span class="substract" style="display: none;">-</span>

然后添加

代码语言:javascript
运行
复制
if ($(this).val() == 1) {
    $('.substract').hide();
}else{
    $('.substract').show(); // add this line
}

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30894922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档