Jquery - 如何在此链接上调用click事件

时间:2017-02-19 06:50:49

标签: javascript jquery

我的HTML看起来像这样

<li>
     <div class="patient-details">
                   <span class="patent-name-heading">
                        <a id="Will simth" href="---- "?patientId=12</a>
                  </span>
      </div>
  </li>

请注意,id中有空格。

我试过这个

 $("#patientSelection li").click(function() {
            var res = $(this).find(".patent-name-heading a").attr("id");
            var url=  "#" + res  ;
            console.log(url);
            $(url).click();
         });

我也试过这个

 $("#patientSelection li").click(function() {
   $(this).find(".patent-name-heading a").click()
});     

我收到了错误

Uncaught RangeError: Maximum call stack size exceeded
    at RegExp.exec (<anonymous>)
    at RegExp.[Symbol.match] (<anonymous>)
    at String.match (native)
    at HTMLLabelElement.<anonymous> (https://code.jquery.com/jquery-1.11.3.min.js:5:14722)
    at Function.each (https://code.jquery.com/jquery-1.11.3.min.js:2:2975)
    at m.fn.init.each (https://code.jquery.com/jquery-1.11.3.min.js:2:835)
    at m.fn.init.toggleClass (https://code.jquery.com/jquery-1.11.3.min.js:5:14581)

然而它不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

由于您的id属性值包含空格,因此无法生效,生成的搜索引擎#Will simth会搜索元素中的标记simth,其Will为id

而是直接触发click事件或转义id selector using \\中的空格。

$("#patientSelection li").click(function() {
   $(this).find(".patent-name-heading a").click()
});

要转义空间,您可以使用String#replace方法或使用attribute equals selector

$(url.replace(/ /g,'\\ ')).click();
// or
$('[id="' + url + '"]').click();

<小时/> 更新:要使用event.stopPropagation()方法阻止事件冒泡到DOM树,或使用event.target方法检查is()属性不是a标记。

$("#patientSelection li").click(function() {
   $(this).find(".patent-name-heading a").click()
}).find(".patent-name-heading a").click(function(e){
   e.stopPropagation()
});

$("#patientSelection li").click(function(e) {
  if(!$(e.target).is('.patent-name-heading a'))
    $(this).find(".patent-name-heading a").click()
})

答案 1 :(得分:0)

只需使用span作为点击区域,选择class属性而不是ID,并使用href属性而不是ID:

 $(".patent-name-heading").click(function() {
            var res = $(this).find(".patent-name-heading a").attr("href");
            var url=  "#" + res  ;
            console.log(url);
            $(url).click();
         });