#jquery
#jquery
Вопрос:
Я написал это:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script> jQuery(document).ready(function($)
{ $("div.productInfo").wrap("<div id='productDetails' />");
$("ul.productInfo").wrap("<div id='specs' />");
$("#centerColumn" "#rightColumn").wrap("<div id='test' />");
});
</script>
</head>
<body>
<p id="centerColumn" >This is a paragraph.</p>
<p id="rightColumn" >This is another paragraph.</p>
<div class="productInfo" > Wow </div>
</body>
</html>
И #centerColumn не переносится, только #rightColumn get переносится, почему?
Ответ №1:
Вы используете этот селектор:
$("#centerColumn" "#rightColumn")
Существует оператор конкатенации. Он соединяет строки, поэтому ваш код такой же, как этот:
$("#centerColumn#rightColumn")
Очевидно, что это не приведет ни к чему полезному.
Я думаю, вам нужен множественный селектор:
$("#centerColumn, #rightColumn").wrap("<div id='test' />");
Если вы хотите поместить оба столбца в один и тот же элемент-предок, вам понадобится wrapAll
. Это кажется вероятным, потому что вы предоставляете своему элементу обертывания атрибуты id
и id
, которые должны быть уникальными.
$("#centerColumn, #rightColumn").wrapAll("<div id='test' />");
Ответ №2:
<html>
<head>
<script src="jquery.js"></script>
<script>
$(function() {
$("div.productInfo")
.wrap("<div id='productDetails'><div id='specs' /></div>");
$("#centerColumn, #rightColumn").wrapAll("<div id='test' />");
// or .wrap() instead of .wrapAll() depends on your intentions
});
</script>
</head>
<body>
<p id="centerColumn">This is a paragraph.</p>
<p id="rightColumn">This is another paragraph.</p>
<div class="productInfo"> Wow </div>
</body>
</html>
Смотрите также:
- .wrap() в jQuery API
- .wrapAll() в jQuery API
- Селекторы в документах jQuery
Ответ №3:
Возможно, потому что это:
$("#centerColumn" "#rightColumn").wrap("<div id='test' />");
Должно быть так:
$("#centerColumn,#rightColumn").wrap("<div id='test' />");