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

时间:2015-07-07 09:34:11

标签: javascript jquery

您好我已经给了代码

<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提前

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

Wrap&#39; 1月&#39;在它自己的选择器中 - 然后你可以设置它的文本,而不必担心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;
    }
});

完成后 - 您的代码总是会替换“1月”这个词。一旦第一次更换,文字就不再显示“1月”,因此更换“1月份”#1;&#39;没有效果。

答案 2 :(得分:0)

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

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

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

Demo 只会取代1月份。

答案 3 :(得分:0)

您的代码中存在一些问题:

1)您正在替换test 1中的“1月”,但1月份不存在。 2)用'mario'替换'January'之后,再找不到1月,因为现在有mario因此无法正常工作。

请参阅小提琴:“https://jsfiddle.net/sga5mt0u/

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

答案 4 :(得分:0)

当你跑

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'替换。