繁体   English   中英

Jquery仅在第一次单击时不在其他时间工作

[英]Jquery working only when click first time not on other time

嗨,我已经给了代码

<div class='school-name'>
    <select name="merry" id="exams">
              <option value="test1">test1</option>
              <option value="test2">test2</option>
              <option value="test3">test3</option>
    </select>

    <select name="date[year]" id="date_year">
        <option value="2013">2013</option>
        <option value="2014">2014</option>
        <option selected="selected" value="2015">2015</option>
    </select>
    <button type="button" class='farji'>Click Me!</button>
</div>
<div id='myText'> hii farjiz calendar January</div>

在我的js我已经包括这个

$(document).ready(function() {
  $('.farji').click(function(){    
    currentSelectedYear = $("#date_year option:selected").val()
    alert(currentSelectedYear)
    switch ($("#exams option:selected").val()) {
      case 'test1':
        $("#myText").text(function(e, text) {
          return text.replace('January', currentSelectedYear);
        });
        break;
      case 'test2':
        $("#myText").text(function(e, text) {
          return text.replace('January', 'mario');
        });
        break;
      case 'test3':
        $("#myText").text(function(e, text) {
          return text.replace('January', 'popyee');
        });
        break;
       }
  })
})

所以当我点击farji一旦它改变了我的文本但是再次点击它然后它没有改变请指导我如何解决这个问题。 Thanx提前

这是因为您的代码始终会查找要替换的单词“ January ”。 第一次执行代码时,它会替换年份中的单词January 第二次单击时,它没有找到要替换选定年份的单词January 因此在第一次更换后没有任何反应。

每个人都指出为什么它不会再次工作,但没有人给你一个解决方案。

将'January'包装在自己的选择器中 - 然后您可以设置其文本而无需担心replace

HTML:

<div id='myText'> hii farjiz calendar <span id="changeMe">January</span></div>

JS:

$('.farji').click(function(){    
    currentSelectedYear = $("#date_year option:selected").val();
    alert(currentSelectedYear);
    switch ($("#exams option:selected").val()) {
        case 'test1':
            $("#changeMe").text(currentSelectedYear);
            break;
        case 'test2':
            $("#changeMe").text('mario');
            break;
        case 'test3':
             $("#changeMe").text('popeye');
            break;
    }
});

完成后 - 您的代码总是会替换“January”这个词。 一旦第一次更换,文本就不再显示“1月”,因此替换“1月”将无效。

肯定不行。 如果文本字符串包含January ,它将仅替换。

return text.replace('January','anything')

这将在文本字符串中查找January ,如果存在January ,则替换为anything

演示只会取代一月一次。

您的代码中几乎没有问题:

1)您在test 1中替换“1月”,但1月不存在。 2)用'mario'替换'January'之后,再找不到1月,因为现在有马里奥因此无效。

看小提琴:“ https://jsfiddle.net/sga5mt0u/

这里为“test1”,1月被替换为年份(比如2015)然后对于“test2”,“2015”被“mario”取代。

当你跑步

case 'test1':
    $("#myText").text(function(e, text) {
      return text.replace('January', currentSelectedYear);
    });

$('#myText')价值是:“hii farjiz calendar 2015”

单击第二个时累积

case 'test2':
        $("#myText").text(function(e, text) {
          return text.replace('January', 'mario');
        });

$('#myText')没有'January'替换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM