我目前正在研究我们自制的完整前台100%javascript CMS,我遇到了很多问题。 用户可以编辑的一些可编辑区域包含在href链接中。这些href是不可编辑的,但是,当用户点击这些区域时(在编辑模式下),浏览器会跟随这些链接。
首先,下面是CMS生成的html示例:
<span id ="8a8b8d2e262bde2d01262c08317c000c" class="document">
<a href="/actions/ecommerce/viderSelectionPalierEtVitrine">
<img src="/images/logo.gif" id="8a8b8d2e262bde2d01262c08bf83000d" title="" alt="" class="image logo" />
</a>
</span>
这里,例如,用户只能改变; 所以我试着以这种方式管理周围的href:
var referenceZone = $(this).attr("id");
$("#"+documentId+" a").each(function() {
$(this).click(function() {
return false;
});
});
referenceZone是我周围的<span id ="8a8b8d2e262bde2d01262c08317c000c" class="document">
这在我看来是否很棘手?
&lt; **** EDIT ****&gt; 在此处添加了用于测试目的的沙箱:http://jsbin.com/aboke/2
&lt; **** EDIT 2 ****&gt; 我不明白的是警报(event.type)甚至没有启动!!
//click event disabling on any href of curently edited ${"span.document"}
$("span#" + documentId + " a").click(function(event) {
alert(event.type);
event.preventDefault();
suppressionZoneModifiable(documentId);
recupererTexte(referenceZone, documentId);
});
答案 0 :(得分:3)
是的,这是可能的,但不是通过return语句。使用preventDefault();
var referenceZone = $(this).attr("id");
$("#"+documentId+" a").click(function(event) {
event.preventDefault();
});
此外,除非您使用链接执行任何其他操作,否则无需执行.each()。但是使用event.preventDefault()。
答案 1 :(得分:2)
http://jsbin.com/aboke/2处的沙箱代码有很多错误。这里有几个:
<强> 1。 function参数是一个字符串,但作为数字传递
你应该在这里引用参数:
renduZonesModifiables(8a8b8d2e262bde2d01262c08317c000c);
<强> 2。参数与范围ID
不匹配 8a8b8d2e262bde2d01262c08317c000c
与8a8b8d2e262bde2d01262c08bf83000d
第3。您正在使用onclick而不是单击jQuery
$(this).onclick = function() { return false; }
应该是
$(this).click(function(e) {
e.preventDefault();
});
<强> 4。你有一个js错误
参数列表“(第81行)之后”缺失“
答案 2 :(得分:-1)
$(this).click(function() {
return false;
});
^不起作用。使用$(...).click()
将该函数添加到它单击时执行的函数列表中。它不会删除链接后的默认行为。
您可以通过执行以下操作来覆盖默认链接操作:
this.onclick = function() { return false; }