У меня была та же проблема, но с большим количеством проблем, которые я не мог так легко исправить.Но я нашел решение:
Это мой псевдоисточник (HTML), который я никак не мог изменить.
<html>
<body>
<div id="identifier1">
<script>foo(123)</script>
</div>
<div id="identifier2">
<script>bar(456)</script>
</div>
</body>
</html>
Я использовал $.get()
чтобы получить эту страницу HTML.Теперь, когда у меня есть код в виде строки, пришло время искать его с помощью jQuery.Моя цель состояла в том, чтобы изолировать Javascript-код внутри тега <script>
, который принадлежит DIV identifier2
, но не identifier1
.Итак, что я хотел получить - это bar(456)
как строка результата.По той причине, что jQuery удаляет все теги скрипта, вы не можете искать больше так:
var dom = $(data); //data is the $.get() - Response as a string
var js = dom.filter('div#identifier2 script').html();
Решение - это простой обходной путь.В начале мы заменим все <script>
-Tag на что-то вроде <sometag>
:
var code = data.replace(/(<script)(.*?)(<\/script>)/gi, '<sometag$2</sometag>');
var dom = $(code);
var result = dom.find('div#identifier2 sometag').html();
//result = bar(456)
Это простой взлом, но он работает!