簡體   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