开发者问题收集

Jquery - 如何调用此链接上的点击事件

2017-02-19
637

我的 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个回答

由于您的 id 属性值包含空格,因此它不起作用,生成的选择器将是 #Will simth ,它在元素中搜索标签 simth ,其 ID 为 Will

而是直接触发点击事件或使用 \\ 转义 id 选择器中的空格。

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

要转义空格,您可以使用 String#replace 方法或使用 属性等于选择器

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


更新: 为防止事件冒泡到 DOM 树,请使用 event.stopPropagation() 方法或使用 event.target 属性不是 a 标签noreferrer"> is() 方法。

$("#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()
})
Pranav C Balan
2017-02-19

只需使用 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();
         });
Koby Douek
2017-02-19