JQuery条件处理程序

时间:2017-10-03 05:59:21

标签: javascript jquery html dom

我需要根据" aria-selected"选择一个li元素。在插件初始化之后受该元素影响的属性(特别是它的JQuery UI tab元素,我想处理点击"选择"标签,并添加这些标签动态地到DOM)所以我会这样做:

$("[aria-selected='true']").on('click').method(...);

但是我需要在创建元素时附加此处理程序,之后为时已晚;我正在创建这样的元素:

var $thisTab = $('<li></li>');

所以我需要一种方法来说&#34;将此处理程序附加到此元素,但只有在具有此属性时才触发它,例如:

$thisTab.withClass("[aria-selected='true']").on('click').method(...);

请参阅,此li包含<a href>link</a>,其中&#34;已禁用&#34;当标签是&#34; aria-selected&#34;时通过插件。所以我不能只绑定事件并测试属性,否则我将打破非选定选项卡上的链接;我希望我有道理。

我该怎么做?

3 个答案:

答案 0 :(得分:4)

这应该对你有用

$("body").on('click', "[aria-selected='true']", function(el){
   // ..method 
}

你需要将'future'元素限定为某个perm元素,比如正文,文档等。

更新:

如果您在创建TAB元素后需要执行某些操作,请使用以下内容:

$( ".selector" ).tabs({
  create: function( event, ui ) {}
});

或者您需要在选择标签时更改某些内容,例如:

$( ".selector" ).tabs({
  activate: function( event, ui ) {}
});

hth,欢呼声

答案 1 :(得分:1)

您可能希望delegate点击处理程序。

$('.container').on('click', '[aria-selected=true]', function () {
  // Do something.
});

答案 2 :(得分:1)

试试这个..

 var $thisTab = $('<li></li>');
    $thisTab.on('click', function(){
        var d = $(this).attr('aria-selected');
        if(d=="true") { 
          console.log("here")
        }
    });