无法获得元素的偏移量

时间:2016-05-18 07:05:51

标签: javascript jquery

我试图抵消一些对我来说很好的元素。但是如果元素id包含单引号,则会出现问题。它抛出一个错误,例如,如果元素id是whats_next,它的工作正常。 但如果id是什么' s_next,如果给我一个错误。

UIViewController

此外,我无法通过HTML访问我无法更改HTML。你们有什么解决办法吗?

这是我的代码:

Error: Syntax error, unrecognized expression: #What's_Next

....value:null},t.error=function(e){throw new Error("Syntax error, unrecognized exp...

我点击的元素的HTML:

$('.custom-toc li a').click(function(){
  var id = $(this).attr('href');
  console.log(id);
   console.log($(id).offset());
});

元素偏移元素的HTML:

<a rel="internal" href="#What's_Next">What's Next</a>

4 个答案:

答案 0 :(得分:2)

您可以使用'

逃脱replace()

HTML:

    <div class="custom-toc">
   <ul>
      <li>
        <a href="#What's_Next">dddfs</a>
      </li>
   </ul>
</div>
  <span id="What's_Next">hello</span>
<h4 class="editable">What's Next2</h4>

JS:

 $('.custom-toc li a').click(function(){
  var id = $(this).attr('href').replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1');
  console.log(id);
   console.log($(id).offset());
});

答案 1 :(得分:0)

您是否尝试过将id作为属性方法?

像这样:

var id = "What's Next";
var elem = $("span[id="+id+"]");

好吧,我试过了,但它不起作用:) - 向Garvit致敬,他说得对,这是他的解决方案(仅简化):

  var id = $(this).attr('href');
  console.log(id);
  id = id.replace("'","\\'");
  console.log($("#"+id).offset());

答案 2 :(得分:0)

这是另一种方法,可以在不转义引号的情况下执行此操作,但它要求您从href的前面删除哈希(并且,使用$(&#34; *&#34;)是慢)

$('.custom-toc li a').click(function() {
var href = $(this).attr('href').substring(1);
var a = $("*").filter(
    function(index) {
        return $(this).attr('id') == href;
    }
);
console.log($(a[0]).offset());

答案 3 :(得分:-1)

您无法在div <?php session_start(); include("../phpfiles/include/Config.php"); //db connect $dbc = @mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE); if(!$dbc) { trigger_error('Could not connect to MySql:'. mysqli_connect_error()); } $query = "SELECT dateandtime,sum(grandtotal) FROM bb_pos.bb_bill group by MONTH(dateandtime), YEAR(dateandtime) order by dateandtime DESC limit 12 "; // last 12 month in descending order $result = mysqli_query($dbc, $query); $cart = array(); while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { $date = $row['dateandtime']; $time=strtotime($date); $month=date("F",$time); $year=date("Y",$time); array_push($cart,array( 'period'=>$month." ".$year, 'SALE'=>$row['sum(grandtotal)'])); } echo json_encode($cart); mysqli_close($dbc); ?> <body> <div class="x_content1"> <div id="graph_bar_group" style="width:100%; height:280px;"></div> </div> </body> <script> $.getJSON('morrisdata.php', function(data) { var date = data; function custom_sort(a, b) { return new Date(a.period).getTime() - new Date(b.period).getTime(); } date.sort(custom_sort); // convert the last 12 months in ascending order //var product_name = data.name; Morris.Bar({ element: 'graph_bar_group', data: data, xkey: ['period'], ykeys: ['SALE'], labels: ['SALE'], hideHover: 'auto', resize: true, parseTime: false, xLabelAngle: 60 }); }); </script> 中使用'符号 - 您应该更改

id

<span id="What's_Next"></span>

编辑:

因为您无法更改div的ID您正在处理无效的代码。您应该考虑先调试它以进一步工作。

编辑2:

感谢@Tibrogargan的评论,我已经检查过w3c推荐,他可能是对的:

  

id = ID元素的唯一标识符。一定不能   文档中具有相同id值的多个元素。任何   字符串,具有以下限制:

     
      
  • 必须至少有一个字符
  •   
  • 不得包含任何空格字符
  •   

来源:w3c.org