jQuery After () طريقة لا تعمل مع سمة ID؟
-
28-09-2019 - |
سؤال
الرمز أدناه يعمل بشكل جيد. ولكن إذا قمت بتغيير سلسلة HTML في Newpara () <textarea></textarea><button id="someId">Save</button>
أو <textarea></textarea><input type="button" value="Save"/>
انها لا تعمل. ما هي المشكلة في هذا؟
أحتاج إلى سمة المعرف هذه لإزالة HTML المرفقة حديثًا.
أي اقتراحات!
شكرًا!
<html>
<head>
<style>
p { background:yellow; font-weight:bold; cursor:pointer; padding:5px; }
p.over { background: #ccc; }
span { color:red; }
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div id="aDiv">
<p>Click me!</p>
</div>
<span></span>
<script>
$("body").delegate("p", "click", newPara);
$("body").undelegate("button", "click", newPara).find("#adiv").html("<p>Click me!</p>");
function newPara() {
var html = "<textarea></textarea><button>Save</button>";
$(this).after(html);
}
</script>
</body>
</html>
المحلول
سيكون تخميني الوحيد هو أنك تستخدم عروض أسعار مزدوجة لإنشاء سلسلة حرفية ، ولكن أيضًا تستخدمها داخل السلسلة ، وبالتالي إنهاءها مبكرًا.
إذا كان الأمر كذلك ، هذا:
"<textarea></textarea><button id="someId">Save</button>"
يجب ان يكون:
'<textarea></textarea><button id="someId">Save</button>'
لاحظ أنني استخدمت اقتباسات واحدة من الخارج ، بحيث لا تغلق الخيط الداخلي.
حاول: http://jsfiddle.net/qqrhr/
يستخدم المثال الكود الدقيق الخاص بك. كان التغيير الوحيد الذي أجريته هو استخدام اقتباسات Singe حول السلسلة.
يمكنك أيضًا الهروب من الاقتباسات الداخلية إذا أردت:
"<textarea></textarea><button id=\"someId\">Save</button>"
نصائح أخرى
هل تبحث عن إلحاق بدلاً من بعد؟ او حتى http://api.jquery.com/insertafter/ ?