.replaceWith заменить на функцию

#jquery

#jquery

Вопрос:

Я пытаюсь использовать .replaceWith для замены слов на функцию, но это не работает, я думаю, проблема в том, что я неправильно настроил функцию, но я не знаю, как это правильно написать. Кто-нибудь может мне помочь (это всего лишь мизер.) Спасибо.

     <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js">  
<html>
<body>

<script type="text/javascript">

var d=new Date();
var weekday=new Array(7);
weekday[0]="Monday";
weekday[1]="Tuesday";
weekday[2]="Wednesday";
weekday[3]="Thursday";
weekday[4]="Friday";
weekday[5]="Monday";
weekday[6]="Monday";


</script>


<script type="text/javascript">

$(document).ready(function($){  
    $('div.Shipby').replaceWith(function(){
        return $("<div>").text("Orders placed now will ship "   weekday[d.getDay()]);
    }); 
}); 

</script>

    <div class="Shipby">
         Tomorrow.
    </div>
</body>
</html>
  

Комментарии:

1. Это не так replaceWith работает. Пожалуйста, прочитайте документацию . И использовать document.write там очень, очень неправильно.

2. Не document.write() перезаписывает весь документ?

3. @user172071 — Зачем вам редактировать свой вопрос и вставлять правильный ответ в код там? Или я что-то пропустил?

Ответ №1:

Просто установите text() :

 $('div.Shipby').text("Orders placed now will ship "   weekday[d.getDay()]);
  

Или html() , если вы планируете включить HTML в свою строку:

 $('div.Shipby').html("Orders placed now will ship "   weekday[d.getDay()]);
  

Нет необходимости в использовании document.write() .

Ответ №2:

Как сказал Blender, похоже, было бы проще просто обновить text или html , но если вы хотите использовать replaceWith , вы можете сделать это следующим образом:

 $(document).ready(function($){  
    $("div.Shipby").replaceWith(function(){
        return $("<div>").text("Orders placed now will ship "   weekday[d.getDay()]);
    }); 
}); 
  

Вот jsFiddle:http://jsfiddle.net/TbE6P /

Комментарии:

1. Я думаю, что OP будет сильно смущен этим;) Но да, это вполне допустимое использование .replaceWith() .

2. @SLaks: Спасибо, только что заметил это. Исправлено.

3. @Blender: Да, я согласен, что ваше решение здесь предпочтительнее, но подумал, что я бы показал OP, как добиться этого, также используя replaceWith функцию.

4. Отсюда мой 1. Чем больше ответов, тем веселее!

5. @JamesJohnson Спасибо, я изменил это в соответствии с вашим ответом, и это не работает (я отредактировал свой вопрос